我有一个问题。
我的python项目路径如下:
code_root | - code_sub | |- b.py | -- c.py - a.py
从 b.py 导入了 code_sub 的 c.py。
所以我希望能够从 code_root 和 code_sub 路径加载 b.py。
例如:
code_root>$ python nlp.py
或
code_root/code_sub>$ python b.py
这里的问题是调用c.py。
b.py 不应像这样导入 c.py:
# b.py
import c
所以我找到了解决方案。
如下所示:
from os.path import dirname
curpath = dirname(__file__)
if len(curpath) == 0:
curpath = '.'
c = imp.load_source('c', curpath+'/c.py')
这可行,但似乎不是最好的解决方案。我可以使用更标准的 Python 方法来完成同样的事情吗?
最佳答案
我通常将我的项目设置如下,并使用完全限定的路径进行导入。另外,我强烈建议您使用虚拟环境——然后您可以使用命令“add2virtualenv MyWorkinator, workinator”,这使得导入变得不那么复杂。
MyWorkinator (Project level folder)
|
- workinator (All code here)
|
- package_a
|
- a1.py
- a2.py
- package_b
|
- b1.py
- b2.py
c.py
在c.py中:
import workinator.package_b.b1
在 b2.py 中:
import workinator.package_a.a1
关于python - 我希望能够从根路径和子路径加载类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47537952/