cut*_*low 3 python setuptools virtualenv python-packaging
我一直在尝试正确打包我的 python 代码,将其上传到 git 上,然后安装在虚拟环境中,所有这些我都做了并且似乎工作得很好。问题是,一旦我在虚拟环境上安装我的代码,当我运行我的包时:
python3 -m mypackage
Run Code Online (Sandbox Code Playgroud)
它会引发一个错误,表明我导入的模块__main__.py(我的包有一个目录包含所有内容:__init__.py、__main__.py、module1.py等)中没有一个被看到。但是,一旦我“cd”到虚拟环境中安装包的位置,它就可以看到所有模块并且一切正常。我猜我的文件有问题setup.cfg,我猜“查找”命令没有执行它们应该执行的操作
还请让我知道是否还有其他东西可以写得更优雅。
[metadata]
# replace with your username:
name = my_package
version = 0.0.1
author = my_name
author_email = name@email.com
description =
long_description = file: README.md
long_description_content_type = text/markdown
url = https://github.com/myname/mypackage
project_urls =
Bug Tracker = https://github.com/myname/mypackage/issues
classifiers =
Programming Language :: Python :: 3
License :: OSI Approved :: MIT License
Operating System :: OS Independent
[options]
package_dir =
= src
packages = find:
python_requires = >=3.6
install_requires =
numpy > 1.0
opencv-python >= 4.0
[options.packages.find]
where = src
Run Code Online (Sandbox Code Playgroud)
小智 5
我有一个类似的问题,它困扰了我几天。最后我明白问题出在文件夹结构上。如果您使用该find:函数,setup.cfg那么它将在下面查找包/src,但如果您只有模块(就像我一样),它将找不到任何内容。
您应该将模块放入包含__init__如下文件的文件夹中:
src
|
|-----package:
|
|------ __init__.py
|------ module1.py
|------ module2.py
|------ ...
Run Code Online (Sandbox Code Playgroud)
请注意,当您尝试时,import module1您将需要导入:
src
|
|-----package:
|
|------ __init__.py
|------ module1.py
|------ module2.py
|------ ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1437 次 |
| 最近记录: |