【发布时间】:2020-11-10 00:56:18
【问题描述】:
我有一个 Python 包,格式为:
mypackage
├── README.md
├── doc
│ └── README.md
├── examples
│ └── README.md
├── setup.py
└── src
├── __init__.py
├── core
│ ├── __init__.py
│ └── main.py
└── test
└── README.md
它有一个随附的 setup.py 文件:
import os
from setuptools import setup, find_packages
def read(fname):
"""
Reads the README functions are prints them into the long_description in
the setup routine.
Parameters
----------
fname : README file name
Returns
-------
Rendered README
"""
return open(os.path.join(os.path.dirname(__file__), fname)).read()
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Programming Language :: Python",
]
def run_setup():
"""
This functions holds the setup command. Rather than running setup directly,
it is wrapped in a 'try-except' that will print out errors if they occur.
"""
setup(
name='My Package',
version='0.1',
description='My package',
long_description=read('README.md'),
long_description_content_type='text/markdown',
classifiers=classifiers,
packages=['src', 'src.core'],
python_requires='>=2.7.9',
entry_points="""
[console_scripts]
my_package = src.core.main:main
""",
)
try:
run_setup()
except SystemExit as e:
print(e)
当我运行python setup.py develop 或pip install -e . 时,软件包显示它安装成功。但是,当我运行my_package 时,它给出了错误:
Traceback (most recent call last):
File "/Users/mm/opt/anaconda3/bin/my_package", line 33, in <module>
sys.exit(load_entry_point('My-Package', 'console_scripts', 'my_package')())
File "/Users/mm/opt/anaconda3/bin/my_package", line 25, in importlib_load_entry_point
return next(matches).load()
File "/Users/mm/opt/anaconda3/lib/python3.7/site-packages/importlib_metadata/__init__.py", line 105, in load
module = import_module(match.group('module'))
File "/Users/mm/opt/anaconda3/lib/python3.7/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'src.core'
我在适当的地方有__init__.py 文件。我试过使用setuptools'明确的find_packages 例程。我在这里做错了什么?
【问题讨论】:
-
您能否确认您的
site-packages文件夹中有一个名为src的包?您也可以运行pip list进行验证。我相信它正确安装了软件包,但在src名称下 - 只是想验证一下。 -
Kacper,我在那里看不到,但我看到了 My-Package。
-
您能否粘贴
python -c "import sys; print(sys.executable)"的输出并告诉您如何调用my_package(当它给出错误时) -
输出:
/Users/mm/opt/anaconda3/bin/pythonsetup.py是这样写的,我试图调用它创建的系统可执行文件。也就是直接$ my_package -
如果您运行位于
/Users/mm/opt/anaconda3/<something>的my_package会发生什么情况,也许是/bin/?我有 Windows,文件夹名为/Scripts/。
标签: python anaconda setuptools modulenotfounderror