我创建了一个简化版本,以仅专注于获得相对的工作路径。这是我的文件结构:
|
-project
|-package1
| |--page
| |-__init__
|
|-package2
|-test
|-__init__
我正在尝试将页面导入测试。但是,我得到以下错误,即package1不是模块。在下面,我键入了代码中的所有内容。很简单的。我只是想将页面导入测试。是否有任何我无法导入的东西(文件或页面设置)?
page.py
one='half'
two='ling'
tests.py
import os
import sys
three = (one+two)
print(three)
答案 0 :(得分:0)
您是否尝试过“从package1导入页面”到test.py中?还是“从package1.page导入页面”?
答案 1 :(得分:0)
当import
时,Python Interpreter会在以下位置搜索:
- 内置
- 当前目录
- $ PYTHONPATH,环境变量
- 与安装相关的其他目录
最后三个组成为sys.path
。
对于您来说,要将package1导入package2中的某些脚本中,有两种方法:
- 将
project
路径添加到PYTHONPATH中。- 动态地将
project
路径附加到sys.path
我想您会喜欢后一种解决方案,只需添加
import sys
sys.path.append('..')
一切都将正常工作。
Plus:虽然不在当前目录中使用该模块,但有点不方便。我只看到了几个实际的python项目,而我看到的是其中一些在 project root 中使用单个main.py
来运行整个项目,包括测试用例。也许更推荐这种结构。
希望有帮助〜
原始答案:
此目录结构在我的计算机上可以通过以下方式正常工作:
import package.page as page
page.foo() # a function in page
我可以猜测:您当前的工作目录可能不在您的项目目录下。
要检查,请对此进行测试:
import os
print(os.getcwd())
如果输出的不是您当前的目录,那是我的情况。我以前曾经搞混过。
为避免这种情况,您可以:
cd
到您的目录,然后再运行Python os.chdir(...)
,以更改您的工作目录。 如果不是这种情况,请提供更多信息。