Python 从子目录或相对路径导入包
以下是我的目录设置:Python 从子目录或相对路径导入包,python,packages,Python,Packages,以下是我的目录设置: mydir ├── script1.py └── shared ├── otherstuff ├── script2.py └── pkg ├── box.py └── __init__.py script2.py以 import pkg 而且效果很好。当我在script1.py中包含同一行时,我得到: Traceback (most recent call last): File "script1.py",
mydir
├── script1.py
└── shared
├── otherstuff
├── script2.py
└── pkg
├── box.py
└── __init__.py
script2.py
以
import pkg
而且效果很好。当我在script1.py
中包含同一行时,我得到:
Traceback (most recent call last):
File "script1.py", line 1, in <module>
import pkg
回溯(最近一次呼叫最后一次):
文件“script1.py”,第1行,在
进口包装
有没有什么好方法可以让语法在script1.py
中如此简单地工作?在过去的一个小时里,我一直在阅读关于PYTHONPATH
和sys.path
的文章,但我正在尝试为我的repo提供一些基本功能,我不敢相信每次我想运行脚本时都需要修改PYTHONPATH
我错过了什么?将pkg
导入script1.py
的最佳方法是什么 您必须执行以下操作:
from shared import pkg
另外,您的
共享
目录应该有一个\uuuu init\uuuu.py
文件我在Python3.x中测试过,您可以-
import shared.pkg
或
如果您不想在
shared
中创建\uuuu init\uuuuuuuuuuupy
文件并使用import shared.pkg
,您可以通过执行以下操作来解决此问题:
import sys
sys.path.insert(0, 'shared')
import pkg
您使用的是哪一版本的python 2.7?3.x?@Anthon,我用的是3.x请告诉我们完整的错误。看起来好像少了几行;在Python2.xed中进行t测试就是为了反映这一点!谢谢@ssundarraj。这很有效。在
mydir
的另一个子目录中的script3.py
中是否有这样做的方法?很乐意提供帮助。希望这能回答你的问题from..shared import pkg
应该可以工作。@ssundarraj-hmm,这只是给了我SystemError:父模块“”未加载,无法执行相对导入
如果我在这里遗漏了什么,我在python 3.4中尝试了类似的目录结构,在共享中没有\u init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,shared.pkg
谢谢@ana,在共享文件夹中没有\uuuu init\uuuuuuuuuuuuuuuuuuuuuupy
的情况下,它能工作吗?在我的测试中,它在共享文件夹中没有\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。
import sys
sys.path.insert(0, 'shared')
import pkg