我有 2 个相同文件:
a.py
和 b.py
。
它们都包含该行
从 mypackage.utils 导入通用
我还有一个包裹:
mypackage/
__init__.py
mymodule.py
utils/
__init__.py
common.py
myutils1.py
b.py
data_classes/
__init__.py
command_file.py
myclass.py
我初步做了一个
pip install mypackage
然后我运行:
python a.py
成功了
然后我就跑了
python b.py
(请注意,b.py 是 mypackage 中的一个文件)
b.py 失败,没有名为 utils 的模块
有什么想法吗?
(注意:我对 stackoverflow 还很陌生,这与 Python modules import fails ,虽然不知何故是一个后续问题,所以如果我问一个新问题做错了什么,请告诉我:)
<小时/>编辑:
我将 mypackage (特别是 mypackage 中的文件 b)安装在:
$HOME\github\mypackage\mypackage\utils\b.py
我将 b.py 复制到 a.py: $HOME\github\mypackage 这有效
我将 b.py 复制到 a.py: $HOME\github\ 这不起作用
所以这在某种程度上解释了这一点......尽管我仍然不知道如何解决它!
<小时/>编辑: 我从以下行编辑了 setup.py:
packages=['mypackage'],
至
packages=['mypackage','mypackage.data_classes','mypackage.utils']
这似乎解决了我的问题:现在一切正常。
有什么充分的理由让我不应该这样做吗?
最佳答案
我找到了几个解决方案:
import common
或
import sys
sys.path.append("..\\..") # relative path to mypackage, check the slash if you're on linux
from mypackage.utils import common
一些问题:
为什么要移动 b.py?
你安装了你的软件包吗?
关于Python从不同文件导入不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59714611/