Python 在venv中安装sdist:无法从install\u安装程序包
我正在尝试将单个文件Python脚本转换为带有CLI脚本的包。我跟着导游走 我想使用Python 在venv中安装sdist:无法从install\u安装程序包,python,python-packaging,Python,Python Packaging,我正在尝试将单个文件Python脚本转换为带有CLI脚本的包。我跟着导游走 我想使用venv来试用我本地构建的sdist,但我似乎在虚拟环境中的pip安装中遇到了错误 以下是我正在尝试的: $ python3 setup.py sdist $ cd ~/venv $ python3 -m venv . $ source bin/activate $ pip3 install ~/my_module/dist/my_module_0.1.tar.gz Processing ~/my_module
venv
来试用我本地构建的sdist
,但我似乎在虚拟环境中的pip安装中遇到了错误
以下是我正在尝试的:
$ python3 setup.py sdist
$ cd ~/venv
$ python3 -m venv .
$ source bin/activate
$ pip3 install ~/my_module/dist/my_module_0.1.tar.gz
Processing ~/my_module/dist/my_module-0.1.tar.gz
Collecting PIL (from my_module==0.1)
Could not find a version that satisfies the requirement PIL (from my_module==0.1) (from versions: )
No matching distribution found for PIL (from my_module==0.1)
我的包结构(如果重要):
setup.py
注意安装需要
import setuptools
setuptools.setup(
name='my_module',
# ...
packages=setuptools.find_packages(),
entry_points={
'console_scripts': [
'my-cli=my_module.cli:main',
'my-app=my_module.app:main'
],
},
install_requires=[
'PIL',
'imagehash',
'exifread'
],
python_requires='>=3.6'
my_module.py
摘录以显示依赖项
import os
import sys
import time
import shutil
import json
import pickle
from collections import defaultdict
from multiprocessing import Pool, TimeoutError, cpu_count
from PIL import Image
import imagehash
import exifread
# ...
无论我在setup.pyinstall\u requires
列表中放置了什么,virtualenv
pip3
似乎都无法找到它。我的印象是,它应该在虚拟环境中安装这些需求
也许我错过了一些明显的东西。我的软件包设置或测试方法有问题吗?在评论中由@Sraw回答
PIL
是一种打字错误。它应该是枕头
我曾经考虑过它可能是这样的,所以我尝试了一些我认为永远不会失败的东西,比如os
,但也失败了,因为它不是存储库中的宿主,因为它是一个与Python一起分发的核心包
希望这能帮助一些迷失的灵魂在未来忘记你导入PIL
但是pip安装枕头
我以为不再有PIL
模块了。试试枕头
?哈哈。这就是为什么我不应该在周末编码的原因。您可以将此作为答案发布,因为它恰好是这里的解决方案。此外,我尝试将os
放入install\u requires
列表中,只是想看看是否是PIL
错了。显然,这也不起作用……os
是一个内置模块,您只能在PyPi
上安装东西,毫无疑问,PyPi
上没有内置模块。
import os
import sys
import time
import shutil
import json
import pickle
from collections import defaultdict
from multiprocessing import Pool, TimeoutError, cpu_count
from PIL import Image
import imagehash
import exifread
# ...