0

我创建了一个简化版本,只专注于获得工作的相对路径。这是我的文件结构:

|
-project
   |-package1
   |    |--page
   |    |-__init__
   |
   |-package2
        |-test
        |-__init__

我正在尝试将页面导入测试。但是,我收到 package1 不是模块的错误。下面我输入了我的代码中的所有内容。很简单。我只是想将页面导入测试。我是否缺少任何东西(文件或页面设置)阻止我导入?

页面.py


one='half'
two='ling'

测试.py


import os
import sys

three = (one+two)
print(three)
4

2 回答 2

0

更新

import某事,Python解释器在以下地方搜索:

  • 内置插件
  • 当前目录
  • $PYTHONPATH,环境变量
  • 与安装相关的其他一些目录

最后三个补上来sys.path

在您的情况下,要将 package1 导入 package2 中的某个脚本,有两种方法:

  1. project路径添加到 PYTHONPATH。
  2. 动态追加project路径到sys.path

我想你会喜欢后一种解决方案,只需添加

import sys
sys.path.append('..')

在一切面前,它会起作用。

另外:虽然使用不在当前目录中的模块有点不方便。我只见过几个实际的 python 项目,而我所看到的是其中一些main.py项目根目录中使用单个来运行整个项目,包括测试用例。也许这种结构更推荐。

希望有帮助~


原答案:

此目录结构在我的计算机上运行良好:

import package.page as page
page.foo() # a function in page

我可以猜测一下:您当前的工作目录可能不在您的项目目录下。

要检查,请对此进行测试:

import os
print(os.getcwd())

如果输出不是您当前的目录,那就是我的情况。我以前经常弄这个。

为避免这种情况,您可以:

  1. cd在运行 Python 之前到你的目录
  2. 在您的代码中运行os.chdir(...),即更改您的工作目录。

如果不是这种情况,请提供更多信息。

于 2019-05-08T13:40:40.740 回答
0

您是否尝试过“从 package1 导入页面”到您的 test.py 中?还是“从 package1.page 导入页面”?

于 2019-05-07T19:24:32.917 回答