我有一个问题。
我的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方法可以用来完成同样的事情?
答案 0 :(得分:2)
我通常将项目设置如下,并为我的导入使用完全限定的路径。此外,我强烈建议您使用虚拟环境 - 然后您可以使用命令" 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