Python安装后无法找到用户定义的包

问题描述 投票:0回答:1

我正在对 Python 包创建进行 PoC。我已按照链接中提到的步骤进行操作。

请在下面找到示例项目结构

demopackage
  |--__init__.py
  |--config
  |   |--__init__.py
  |   |--dumyconfig.py
  |--processor
  |   |--__init__.py
  |   |--dbprocessor
  |   |    |--__init__.py
  |   |    |--db.py
  |   |--fileprocessor
  |   |    |--__init__.py
  |   |    |--csv.py
  |--validation
  |   |--__init__.py
  |   |--dumyvalidation.py
  |--util
  |   |--__init__.py
  |   |--dumyutil.py
  |--main.py
  |
setup.py

当我在本地运行时,代码按预期工作。但是,在创建包 tar.gz 文件并将其安装在另一个位置后,我收到所有内部模块的 ModuleNotFound/ImportError,即使它们在 site-pacakge 文件夹中可用。

有人可以帮忙解决这个问题吗?

python python-3.x importerror setup.py python-packaging
1个回答
0
投票

main.py
目前使用

from demopackage import config

安装代码后,会在搜索路径 (

demopackage
) 的目录中找到
sys.path
。不过,在安装代码之前,
python main.py
会将
demopackage
本身添加到搜索路径中,您的脚本无法找到名为
demopackage
的包,只能找到目录
../demopackage
中的模块。

一个快速修复方法是将

..
添加到您的搜索路径:

PYTHONPATH=.. python main.py

但是,我建议不要将

main.py
(脚本)存储在包中。将您的布局更改为类似的

demopackage |--__init__.py |--config | |--__init__.py | |--dumyconfig.py |--processor | |--__init__.py | |--dbprocessor | | |--__init__.py | | |--db.py | |--fileprocessor | | |--__init__.py | | |--csv.py |--validation | |--__init__.py | |--dumyvalidation.py |--util |--__init__.py |--dumyutil.py setup.py main.py
这样,当您执行 

demopackage

 时,
python main.py is
 就会隐式添加到您的路径中。

© www.soinside.com 2019 - 2024. All rights reserved.