【发布时间】:2019-09-17 10:50:03
【问题描述】:
我有一个布局如下的文件夹:
root/
package0/
__init__.py
main.py
package1/
__init__.py
main.py
在package1/main.py里面我有import package0。
当我在 root 文件夹上打开终端并运行 python package1/main.py 时,它工作正常。但这很奇怪,因为 cwd 不应该包含在路径中,只有脚本所在的文件夹,在这种情况下是 package1。
当我打印sys.path 时,我可以看到根文件夹在那里。
当我在另一台计算机上运行相同的代码时,我得到了预期的导入错误。
我不明白为什么我会看到这种行为。 我已经检查了 .bashrc 并且没有将 cwd 添加到 python 路径的代码。 两台计算机上可能有什么不同,我正在通过 git 将根文件夹从一台计算机转移到另一台计算机。
【问题讨论】:
-
如果它们是真正独立的包,您可能希望将“package0”安装“package0”到“package1”的开发环境中,而不是像这里所做的那样将它们保持在同一级别.如果它们不需要分开,只需添加一个具有“package0”的父包,并且“package1”是顶级父包的子包。
-
我同意这一点。关键是 package1 是一个文件夹,其中包含一些不应该安装的命令行实用程序,它们依赖于 package0。关键是我在两台机器上得到了不同的行为,我不知道为什么。
-
好的,是的,
cwd应该取决于您执行命令的位置。正如@Enthus3d 提到的,如果您在root/目录级别执行命令,both 包应该在您的 PATH 中。
标签: python python-3.x