在 setup.cfg 中查找出现问题 | 路径中看不到模块

cut*_*low 3 python setuptools virtualenv python-packaging

我一直在尝试正确打包我的 python 代码,将其上传到 git 上,然后安装在虚拟环境中,所有这些我都做了并且似乎工作得很好。问题是,一旦我在虚拟环境上安装我的代码,当我运行我的包时:

python3 -m mypackage
Run Code Online (Sandbox Code Playgroud)

它会引发一个错误,表明我导入的模块__main__.py(我的包有一个目录包含所有内容:__init__.py__main__.pymodule1.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)