我有一个存放所有.py文件的目录。

bin/
   main.py
   user.py # where class User resides
   dir.py # where class Dir resides

我想在main.py中使用user.py和dir.py中的类。 如何将这些Python类导入main.py? 此外,如果User .py在子目录中,我如何导入User类?

bin/
    dir.py
    main.py
    usr/
        user.py

当前回答

Python 3


相同的目录中。

导入文件:log.py

导入类:SampleApp()。

import log
if __name__ == "__main__":
    app = log.SampleApp()
    app.mainloop()

or

目录是最基本的。

导入文件:log.py。

导入类:SampleApp()。

from basic import log
if __name__ == "__main__":
    app = log.SampleApp()
    app.mainloop()

其他回答

如果user.py和dir.py不包括类,那么

from .user import User
from .dir import Dir

不起作用。然后您应该导入as

from . import user
from . import dir

对于python3

from .user import用户 从侄子导入:从。usr。user import用户

# My Python version: 3.7
# IDE: Pycharm 2021.1.2 Community

# Have "myLib" in folder "labs":

class Points:
    def __init__(self, x = 0, y = 0):
        self.__x = x
        self.__y = y
    def __str__(self):
        return f"x = {self.__x}, y = {self.__y}"

# Have "myFile" in (same) folder "labs":

from myFile import Point

p1 = Point(1, 4)
p2 = Point(1, 4)
print(f"p1: {p1}, p2: {p2}")

# Result:
# p1: x = 1, y = 4, p2: x = 1, y = 4

# Good Luck!

实际上,Python并没有为这种日常用例提供优雅的解决方案。当您正在测试最终将作为Python包的一部分交付的代码时,这尤其成问题。下面是一个对我很有效的方法:

迪尔 |

file1.py file2.py

假设你想从file1导入file2。

# In file1.py:
try:
     # This works when packaged as Python package
     from . import file2
except:
     # This works when simply invoking file1 as a module (i.e. python file1)
     import file2

# rest of the code ...
from user import User 
from dir import Dir