我在尝试安装django项目的要求时遇到了问题.
我无法弄清楚为什么我会收到这个错误.
有人能引导我朝着正确的方向前进吗?
>Running setup.py egg_info for package django-staticfiles
Traceback (most recent call last):
File "<string>", line 14, in <module>
File "/Users/glosseyvilly/Desktop/Workspace/chris_dev/mysite-env/build/django-staticfiles/setup.py", line 128, in <module>
'versiontools >= 1.6',
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/core.py", line 113, in setup
_setup_distribution = dist = klass(attrs)
File "build/bdist.linux-i686/egg/setuptools/dist.py", line 260, in __init__
File "build/bdist.linux-i686/egg/setuptools/dist.py", line 284, in fetch_build_eggs
File "build/bdist.linux-i686/egg/pkg_resources.py", line 563, in resolve
plugin_projects = list(plugin_env)
File "build/bdist.linux-i686/egg/pkg_resources.py", line 799, in best_match
File "build/bdist.linux-i686/egg/pkg_resources.py", line 811, in obtain
File "build/bdist.linux-i686/egg/setuptools/dist.py", line 327, in fetch_build_egg
File …
Run Code Online (Sandbox Code Playgroud) 所以我从头开始创建一个全新的Flask应用程序.正如所有优秀的开发人员所做的那样,我的第一步是创建虚拟环境.
我在虚拟环境中安装的第一件事是Flask==0.11.1
.Flask安装以下依赖项:
- 点击== 6.6
- itsdangerous == 0.24
- Jinja2的== 2.8
- MarkupSafe == 0.23
- WERKZEUG == 0.11.11
- 轮== 0.24.0
现在,我创建了一个requirements.txt,以确保每个克隆存储库的人都拥有相同版本的库.但是,我的困境是这样的:
requirements.txt
是否存在在 Python 代码存储库中存储多个文件的约定。例如,一个文件用于简单运行程序,另一个文件用于日常开发,另一个文件用于进行 Windows 构建。
requirements.txt
and requirements_dev.txt
,或requirements.txt
and requirements_win.txt
- 这看起来非常特别。requires
子文件夹的。但我不确定requires/requirements.txt
在这种情况下的含义是什么——运行应用程序还是用于开发?我正在pip freeze
一个 python 项目上运行,它显示除数字版本之外的字符串 VERSION 并且包安装失败,警告消息是:
weasyprint 43 有要求 cairocffi>=0.9.0,但您将拥有不兼容的 cairocffi file-.cairocffi-VERSION。
cairocffi===file-.cairocffi-VERSION
Run Code Online (Sandbox Code Playgroud)
cairoccffi 是我在项目中使用的 Weasyprint 的依赖项,并且 weasypring 版本是正确的:
WeasyPrint==43
Run Code Online (Sandbox Code Playgroud)
我尝试使用pipreqs
生成 requirements.txt,它没有显示 cairocffi 包,但包安装失败并出现相同的错误。
我检查了 site-packages 文件夹,它包含
cairocffi-file_.cairocffi_VERSION.dist-info/
Run Code Online (Sandbox Code Playgroud)
导致问题的原因。
有人可以帮忙吗?
我的目标是一种简单而正确的方法来导出我的venv
. 在最佳情况下,结果requirements.txt
适用于所有兼容系统。
目前我使用pip freeze > requirements.txt
. 这使用了==
“版本匹配子句”。在其他系统上,该文件可能由于版本冲突而无法工作,尽管它是兼容的。
PEP 440中还有一个~=
“兼容条款”。但是,我在 pip freeze docs中找不到相应的选项。awk
使用“查找和替换”或类似将 == 替换为 ~= 的工具可以正常工作。
我天真的结论是,这~=
将是在 中使用的理想子句requirements.txt
。然而,当我查看流行的软件包时,他们经常使用它们>=
来指定版本。例如在urllib3。
~= 有一个我没有看到的缺点吗?
如果不是这样:为什么在这么多包中使用 >= ?
编辑:
Pigar有一个本地使用 >= 的选项,并且这里有一个与 freeze 的比较。显然,他们也不使用〜=。
然而,我仍然不确定该使用哪一个,因为当发生重大版本更改时 >= 可能会中断。此外,较低次要版本的软件包将被标记为不兼容,尽管它们应该是兼容的。
我在为我的项目安装依赖项时遇到错误!
\n操作系统:Windows 11
\nPython:3.10.4(64位)
\n点:22.1.2
\n Building wheel for django-admin-sortable2 (setup.py) ... done\n Created wheel for django-admin-sortable2: filename=django_admin_sortable2-0.7.5-py3-none-any.whl size=69989 sha256=0a4ff29d0c9b0422611dde61c6c1665dd36b10f98413f4ed7b8532e29afdc03d\n Stored in directory: c:\\users\\kev\\appdata\\local\\pip\\cache\\wheels\\99\\3e\\95\\384eeaa2d641ef0c9e8b46e701737b53ae6a973358887816e0\n Building wheel for easy-thumbnails (setup.py) ... done\n Created wheel for easy-thumbnails: filename=easy_thumbnails-2.7-py2.py3-none-any.whl size=69700 sha256=ce66afcd2ca403acf9225b53eed60300c8d37c3bad53dcdf37ebc3a25550bdc6\n Stored in directory: c:\\users\\kev\\appdata\\local\\pip\\cache\\wheels\\cb\\33\\00\\f7fa4b381ae4cbaf99674fb7a4411339d38e616cfcc41632c5\n Building wheel for gevent (pyproject.toml) ... error\n error: subprocess-exited-with-error\n\n \xc3\x97 Building wheel for gevent (pyproject.toml) did not run successfully.\n \xe2\x94\x82 exit code: 1\n \xe2\x95\xb0\xe2\x94\x80> [288 lines of output]\n running bdist_wheel\n running build\n running build_py\n creating …
Run Code Online (Sandbox Code Playgroud) 我想创建一个python分发包,并且需要检查我自己的包所需的所有包。
对于requirements.txt,它包括它需要的所有包。但是,我想找到一种方法来检查我需要的所有包,并且对于某些包,它们也是我项目中其他包的一些要求。
有什么方法可以检查我需要哪些包,并为我自己的项目维护最少的包?
在 readthedocs.io 网络界面上单击“构建”时,我无法成功构建我的文档,但它在我的本地机器上构建得很好。为了测试这是一个环境问题,我创建了一个虚拟环境:
conda create virtualenv -n venv
conda env export -n venv
source activate venv
Run Code Online (Sandbox Code Playgroud)
然后我将我的 requirements.txt 文件安装为:
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
然后跑了
make clean html
Run Code Online (Sandbox Code Playgroud)
在虚拟环境和在线 buildthedocs 中,我收到错误消息:
Notebook error:
PandocMissing in ex_degassing.ipynb:
Pandoc wasn't found.
Please check that pandoc is installed:
http://pandoc.org/installing.html
make: *** [html] Error 2
Run Code Online (Sandbox Code Playgroud)
我已经搜索并搜索了一个解决方案,但我最好的猜测是 pandoc 没有通过 pip 安装,即使它在 requirements.txt 文件中。我还尝试通过在我的 requirements.txt 文件中替换pandoc
with来告诉它从源代码构建git+git://github.com/jgm/pandoc#egg=pandoc
,但这不起作用(请参阅下文了解我的文件的外观)。我可以轻松地在本地机器上安装 pandoc,但无法通过我的虚拟环境或 readthedocs 中的 requirements.txt 文件进行安装。
这是我的requirements.txt文件:
sphinx>=1.4
sphinx_rtd_theme
ipykernel
nbsphinx
pandas
pandoc
numpy …
Run Code Online (Sandbox Code Playgroud) 这个问题涉及任何包,而不仅仅是Python版本本身。提供一些背景信息:我们计划在工作中构建一个内部包,它自然会有很多依赖项。为了给我们的开发人员提供自由并避免混乱的版本冲突,我想为包需求(.txt)指定更广泛的约束,例如,pandas>=1.0
或pyspark>=1.0.0, <2.0
。
有没有一种方法可以有效地确定/测试给定代码所需的最低版本?
我可以安装pandas==0.2.4
并查看代码是否运行,等等,但这种方法似乎很快就会失控。这是我第一次从事软件包构建工作,所以我对此有点迷失。查看其他包的源代码(在 GitHub 上)对我没有帮助,因为我不知道开发人员用来指定依赖项约束的方法是什么。
当我尝试使用“pip install -rrequirements.txt”将 python 3.6.8 的一些需求安装到我的文件夹时,我在 cmd 行底部收到以下消息
ERROR: In --require-hashes mode, all requirements must have their versions pinned with ==. These do not:
importlib-metadata from https://files.pythonhosted.org/packages/71/c2/cb1855f0b2a0ae9ccc9b69f150a7aebd4a8d815bd951e74621c4154c52a8/importlib_metadata-4.8.1-py3-none-any.whl#sha256=b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15 (from backports.entry-points-selectable==1.1.0->-r requirements-38.txt (line 7))
Run Code Online (Sandbox Code Playgroud)
我已经将我的 pip 版本更新到 21.2.4,有谁知道可能会导致什么以及如何解决这个问题?欣赏!!
requirements.txt ×10
python ×8
pip ×6
dependencies ×1
django ×1
pandoc ×1
python-3.6 ×1
python-3.x ×1
python-wheel ×1
virtualenv ×1
weasyprint ×1