python - 在 venv 中安装 sdist:无法从 install_requires 安装软件包
问题描述
我正在尝试将单个文件 Python 脚本转换为带有 CLI 脚本的包。我正在关注打包 Python 项目指南。
我想用来venv
尝试我的本地构建sdist
,但我似乎从pip install
虚拟环境中得到错误。
这是我正在尝试的:
$ 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)
我的包结构(以防万一):
├── my_module
│ ├── app.py
│ ├── cli.py
│ ├── __init__.py
│ └── my_module.py
└── setup.py
安装程序.py
注意install_requires
。
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'
我的模块.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_requires
列表中放了什么,virtualenv
pip3
似乎都找不到它。我的印象是它应该在虚拟环境中安装这些要求。
也许我在这里遗漏了一些明显的东西。我的包设置或测试方法有问题吗?
解决方案
@Sraw 在评论中回答。
PIL
是一个错字。应该是Pillow
。
我曾考虑过它可能是这样的,所以我尝试放置一些我认为永远不会失败的东西,比如os
,但这也失败了,因为它没有托管在存储库中,因为它是与 Python 本身一起分发的核心包。
希望这可以帮助一些将来忘记你的迷失的import PIL
灵魂pip install Pillow
。
推荐阅读
- python - 如何使用 Python (Selenium) 抓取画布元素
- javascript - 使用单选按钮一次将函数应用于单个 div
- javascript - jquery如何获取动态创建的每一行的索引
- c++ - 因超时而终止:优化的范围在哪里?
- swift - 流式传输显示、转换它并在窗口中显示它?
- list - 连续流列出,没有重复
- javascript - 希望构建一个正则表达式,以按顺序查找由不同特定长度的空格分隔的 3 个单词
- ocr - 如何在不使用可执行文件的情况下在 Windows 上使用 tesseract?
- sql - Oracle:棘手的更新和插入内部循环
- javascript - 尝试创建一个单独的文件,我可以在涉及“新”的 JavaScript 中导入