多年来,我一直在使用pyenv和我自己的模块。尝试一下3.10.6,事情就会破裂。
以下工作(今天新安装-runbook是我自己的代码(:
pyenv install 3.9.13
pyenv shell 3.9.13
pip install -e ~/code/runbook
runbook -h
当我对3.10.6做同样的操作时,前3个步骤看起来很好,但最后一个失败了。
pyenv install 3.10.6
pyenv shell 3.10.6
pip install -e ~/code/runbook
runbook -h
故障似乎在pyenv包装器脚本中:
$ runbook -h
Traceback (most recent call last):
File "<path>/.pyenv/versions/3.10.6/bin/runbook", line 33, in <module>
sys.exit(load_entry_point('runbook', 'console_scripts', 'runbook')())
File "<path>/.pyenv/versions/3.10.6/bin/runbook", line 25, in importlib_load_entry_point
return next(matches).load()
File "<path>/.pyenv/versions/3.10.6/lib/python3.10/importlib/metadata/__init__.py", line 171, in load
module = import_module(match.group('module'))
File "<path>/.pyenv/versions/3.10.6/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'runbook'
我看到一些类似的报告,像这样,但没有解决方案。FWIW,我用的是Mac,但用的是旧款Mac,而不是M1/M2。
我能够通过更新模块的setup.py并在setup调用中添加packages
值来解决这个问题。
from setuptools import setup
setup(
name='runbook',
version='1.0.0',
packages=['src'],
entry_points={
'console_scripts': [
'runbook=runbook:main'
]
}
)
如果没有packages行,则任何导入都将失败。