我正在构建一个应用程序,该应用程序使用photologue
了具有photologue
依赖关系的其他软件包(例如cmsplugin-photologue
)。但是,我需要使用photologue
托管在github上的修改版本。所有这些都将部署在Heroku上,这意味着依赖项的安装仅通过requirements.txt
文件即可完成。
原则上,这很容易完成:我可以按照此处所述将存储库添加到需求文件中,然后将其安装。问题在于原件photologue
也已安装,并且最终被使用了。
因此,通常的问题是:使用pip
,如何用自己的应用程序版本替换依赖于多个应用程序的应用程序?
我正在尝试将 Django 应用程序部署到 Heroku,其中一个必需的包存在于https://testpypi.python.org/pypi
其中,当然 Django 位于主 PyPI 服务器上。
该requirements.txt
文件如下所示:
Django==1.7.7
-i https://testpypi.python.org/pypi
foo-bar==0.4
Run Code Online (Sandbox Code Playgroud)
运行pip install -r requirements.txt
失败并出现以下错误:
Could not find any downloads that satisfy the requirement Django==1.7.7 (from -r requirements.txt (line 1))
Cleaning up...
No distributions at all found for Django==1.7.7 (from -r requirements.txt (line 1))
Run Code Online (Sandbox Code Playgroud)
所以看起来pip
是在试图找到 Djangotestpypi
所以我试过这个:
-i https://pypi.python.org/pypi/
Django==1.7.7
-i https://testpypi.python.org/pypi
foo-bar==0.4
Run Code Online (Sandbox Code Playgroud)
它导致相同的错误。
如果我在需求文件中只放置一个(无关紧要)包,pip 能够找到该包并安装它。
问题:index-url
在单个文件中指定可由命令读取的多个不同参数的正确语法是什么pip install -r file
我认为这并不重要,但 python 是 3.4.0 版,而 pip …
某些 Python 包需要两个包之一作为依赖项。例如,Ghost.py
需要PySide
或PyQt4
。
是否可以在requirements.txt
文件中包含这样的依赖项?是否有任何“或”运算符可以处理这些文件?
如果没有,我该怎么做才能将这些要求添加到文件中,以便只安装其中之一?
这是我第一次将 Flask Web 应用程序部署到 Azure。我按照这个教程进行了操作。
他们的默认演示应用程序对我来说效果很好。
之后,我通过 git 推送了 Flask 应用程序。日志显示部署成功。但是,当我通过“应用程序属性”中提供的链接浏览托管应用程序时,出现 500 错误,如下所示:
由于发生内部服务器错误,该页面无法显示。
最可能的原因:IIS收到请求;但是,在处理请求期间发生了内部错误。此错误的根本原因取决于哪个模块处理请求以及发生此错误时工作进程中发生的情况。IIS 无法访问网站或应用程序的 web.config 文件。如果 NTFS 权限设置不正确,则可能会发生这种情况。IIS 无法处理网站或应用程序的配置。经过身份验证的用户无权使用此 DLL。该请求已映射到托管处理程序,但未安装 .NET 扩展性功能。
通过 KUDU 浏览 wwwroot,我看到的唯一不合理的事情是,尽管 wwwroot 中存在“requirements.txt”文件,但我在本地虚拟环境中安装的软件包都没有安装在 Azure 上。
我的理解是,在 GIT 成功推送后,Azure 会 pip 安装在 requests.txt 中找到的任何不存在的包。但这似乎并没有发生在我身上。
我是否做错了什么,丢失的包裹只是一个症状,还是可能是问题的原因?
笔记:
我的 Flask 应用程序在本地(linux)和第 3 方 VPS 上运行良好
我从头开始重新部署了好几次都没有用(我用的是本地GIT方法)
我在本地克隆了 Azure Flask 演示应用程序,仅更改了应用程序文件夹并推送回 Azure,但没有成功。
Azure 设置为 Python 2.7 与我本地的虚拟环境相同
正如上面链接的教程中所建议的,我删除了“env”文件夹并重新部署以欺骗 Azure 重新安装虚拟环境。它确实做到了,但有自己的默认包,而不是我的requirements.txt中的包。
我的requirements.txt有以下内容:
bcrypt==3.1.0 cffi==1.7.0 click==6.6 Flask==0.11.1 Flask-Bcrypt==0.7.1 Flask-Login==0.3.2 Flask-SQLAlchemy==2.1 Flask-WTF==0.12它的危险==0.24 Jinja2==2.8 MarkupSafe==0.23 pycparser==2.14 PyMySQL==0.7.7 python-http-client==1.2.3 六==1.10.0 …
我想生成requirements.txt
文件。pip freeze
在 MacOS 上使用时,我得到一长串模块:
altgraph==0.10.2
ansible==2.2.1.0
bdist-mpkg==0.5.0
bonjour-py==0.3
certifi==2017.7.27.1
cffi==1.9.1
chardet==3.0.4
cryptography==1.7.1
enum34==1.1.6
idna==2.6
ipaddress==1.0.18
Jinja2==2.8.1
macholib==1.5.1
MarkupSafe==0.23
matplotlib==1.3.1
modulegraph==0.10.4
numpy==1.8.0rc1
paramiko==2.1.1
py2app==0.7.3
pyasn1==0.1.9
pycparser==2.17
pycrypto==2.6.1
pyobjc-core==2.5.1
pyobjc-framework-Accounts==2.5.1
pyobjc-framework-AddressBook==2.5.1
pyobjc-framework-AppleScriptKit==2.5.1
pyobjc-framework-AppleScriptObjC==2.5.1
pyobjc-framework-Automator==2.5.1
pyobjc-framework-CFNetwork==2.5.1
pyobjc-framework-Cocoa==2.5.1
pyobjc-framework-Collaboration==2.5.1
pyobjc-framework-CoreData==2.5.1
pyobjc-framework-CoreLocation==2.5.1
pyobjc-framework-CoreText==2.5.1
pyobjc-framework-DictionaryServices==2.5.1
pyobjc-framework-EventKit==2.5.1
pyobjc-framework-ExceptionHandling==2.5.1
pyobjc-framework-FSEvents==2.5.1
pyobjc-framework-InputMethodKit==2.5.1
pyobjc-framework-InstallerPlugins==2.5.1
pyobjc-framework-InstantMessage==2.5.1
pyobjc-framework-LatentSemanticMapping==2.5.1
pyobjc-framework-LaunchServices==2.5.1
pyobjc-framework-Message==2.5.1
pyobjc-framework-OpenDirectory==2.5.1
pyobjc-framework-PreferencePanes==2.5.1
pyobjc-framework-PubSub==2.5.1
pyobjc-framework-QTKit==2.5.1
pyobjc-framework-Quartz==2.5.1
pyobjc-framework-ScreenSaver==2.5.1
pyobjc-framework-ScriptingBridge==2.5.1
pyobjc-framework-SearchKit==2.5.1
pyobjc-framework-ServiceManagement==2.5.1
pyobjc-framework-Social==2.5.1
pyobjc-framework-SyncServices==2.5.1
pyobjc-framework-SystemConfiguration==2.5.1
pyobjc-framework-WebKit==2.5.1
pyOpenSSL==0.13.1
pyparsing==2.0.1
python-dateutil==1.5
pytz==2013.7
PyYAML==3.12
requests==2.18.4
scipy==0.13.0b1
six==1.4.1
urllib3==1.22
vboxapi==1.0
xattr==0.6.4
zope.interface==4.1.1
Run Code Online (Sandbox Code Playgroud)
实际上,我只知道我使用的yaml
, …
我的 python 包依赖于不在 pypi 中的私有包。你可以假设私有包的结构是这样的。
目标:以任何方式将 3rd 方私有包存储在我自己的包中的某个位置,以便在我运行时pip install -r requirements.txt
(甚至更好pip install <my_pkg_name>
)安装 3rd 方依赖项。这必须适用于 Windows 和 Linux。
一个潜在的解决方法:不要安装第 3 方模块。相反,将其按原样放置在主包目录import
及其模块中。
/my_pkg
/non_pypi_pkg
/my_pkg
module.py
Run Code Online (Sandbox Code Playgroud)
哪里module.py
可以import non_pypi_pkg
不用安装non_pypi_pkg
。
问题:实现目标的推荐做法是什么?我们可以做得比我的解决方法更好吗?
如何将 pip install 添加torch_nightly -f https://download.pytorch.org/whl/nightly/cu90/torch_nightly.html
到requirements.txt
?
我尝试将版本设置为链接以及仅添加链接,但两者显然都不正确
编辑:不会让我添加更多评论,但是我试图将需求文件用于 virtualenvwrapper 环境。想要pip3.6 freeze
将我的 brew python3.6 库复制到虚拟环境中。
Flake8 是纯静态代码分析器还是应该pip install -r requirements.txt
先运行?
或者,是否有任何用例 Flake8 可以使用已安装的依赖项?
我在将无服务器应用程序部署到 AWS 时遇到问题。在 AWS 中,日志显示:
Unable to import module 'wsgi_handler': No module named 'werkzeug'
Run Code Online (Sandbox Code Playgroud)
我已经在我的 requirements.txt 中明确指定了 werkzeug,但是当我运行时sls deploy
,指定的包似乎没有放在上传到我的 S3 存储桶的 zip 文件中。
下面是我的 serverless.yml 文件的副本:
service: serverless-flask
plugins:
- serverless-python-requirements
- serverless-wsgi
- serverless-dynamodb-local
custom:
tableName: 'transactions-table-${self:provider.stage}'
wsgi:
app: app.app # entrypoint is app.app, which means the app object in the app.py module.
packRequirements: false
pythonRequirements:
dockerizePip: true
dynamodb:
stages:
- test
- dev
start:
migrate: true
provider:
name: aws
runtime: python3.6
stage: dev
region: us-east-1
iamRoleStatements: …
Run Code Online (Sandbox Code Playgroud) 有一个本地包 ABC-0.0.2-py3-none-any.whl
。我想通过 requrements.txt 将它安装在不同的项目中。例如
要求.txt
ABC==0.0.2
Flask==1.1.2
flask-restplus==0.13.0
gunicorn==20.0.4
Run Code Online (Sandbox Code Playgroud)
是否可以通过这种方式安装 ABC 包。ABC-0.0.2-py3-none-any.whl
包含在源代码中。我不得不pip install ABC-0.0.2-py3-none-any.whl
分开。
requirements.txt ×10
python ×8
pip ×6
heroku ×2
aws-lambda ×1
azure ×1
deployment ×1
flake8 ×1
flask ×1
git ×1
https ×1
python-2.7 ×1
serverless ×1
virtualenv ×1
wsgi ×1