【发布时间】:2019-01-04 01:34:09
【问题描述】:
我创建了一个发布到 pypi.org 的 python 包。该包由一个与包同名的 .py 文件组成。
在 conda 或标准 python 环境中通过 pip (pip install package_name) 安装包后,我必须使用以下语句从该模块导入函数:
from package_name.package_name import function_x
如何重新组织我的包或调整我的安装命令,以便我可以使用 import 语句
from package_name import function_x
我通过python setup.py install安装时已成功使用。
我的 setup.py 在下面
setup(
name = "package_name",
version = "...",
packages=find_packages(exclude=['examples', 'docs', 'build', 'dist']),
)
【问题讨论】:
-
您显然是在要求
setuptools构建一个包含您的模块的包,而不仅仅是安装您的模块。如果您没有明确执行此操作,可能是因为您使用find_packages只是搜索整个源代码树并找到所有包。如果你只有一个文件,那么不使用它可能比让它找到你的模块作为一个平面模块更容易。 -
我能想到的唯一另一种可能性是你有一个
package_name目录,其中有一个__init__.py和一个名为package_name.py的模块文件,而__init__.py正在尝试导入和重新- 从模块中导出所有内容,但不知何故你得到了setuptools,要么忽略__init__.py,要么替换它。但这似乎不太可能是您的问题。 -
谢谢@abarnert。这是因为我在设置参数中使用了包而不是 py_modules!
标签: python pip python-import conda python-packaging