Python 在venv中安装sdist:无法从install\u安装程序包

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

我正在尝试将单个文件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/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.py
install\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

# ...