gpt4 book ai didi

打包后 Python 子模块不可见

转载 作者:行者123 更新时间:2023-11-28 19:13:28 24 4
gpt4 key购买 nike

我一直在尝试使用 setup.py 打包我的项目,但遇到了麻烦。

我的文件结构如下:

root/
mypackage/
__init__.py
mysubmodule1/
__init__.py
mysubmodule2/
__init__.py

我在 setup.py 中使用了以下配置,

from setuptools import setup, find_packages
# To use a consistent encoding
from os import path
import glob

here = path.abspath(path.dirname(__file__))

print(find_packages(exclude=['docs', 'tests*']))
setup(
name='mypackage',
packages=find_packages(exclude=['contrib', 'docs', 'tests*']),
install_requires=[...],
scripts=[...],
)

我在 virtualenv 中使用 python setup.py install 构建包,我打印的调试行显示 find_packages 找到了我所有的包。

['mypackage', 'mypackage.submodule1', 'mypackage.submodule2']

当我导入我的包时,我试图导入 mypackage.submodule1.class,但这引发了一个模块未找到异常。我检查了我的所有模块都在 virtualenv 站点包的输出蛋中,并且我可以导入我的根包。

dir(mypackage) 的输出如下:

Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mypackage
>>> dir(mypackage)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__']

我错过了什么吗?我引用的所有开源项目都遵循这种模式。谢谢

最佳答案

找到了解决方法。似乎只是运行 setup.py 并没有打包我的所有文件并使其可见。

因此,我分两个阶段运行本地设置,以获取 python 环境中的所有文件。

第一个命令将创建一个包含 dist 文件夹中所有文件的分发版。

$ python setup.py sdist

$ tree dist
dist
├── TrainingDataAgent-0.0.1-py2.7.egg
└── TrainingDataAgent-0.0.1.tar.gz

$ pip install dist/TrainingDataAgent-0.0.1.tar.gz

这允许我的调用程序正确定位我的 python 包的所有文件。

关于打包后 Python 子模块不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36721661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com