Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pip:将依赖项下载到特定平台,包括非二进制文件_Python_Installation_Pip_Cross Platform - Fatal编程技术网

Python pip:将依赖项下载到特定平台,包括非二进制文件

Python pip:将依赖项下载到特定平台,包括非二进制文件,python,installation,pip,cross-platform,Python,Installation,Pip,Cross Platform,我正在尝试将的依赖项从linux主机下载到无法访问internet的windows目标 阅读上的示例后,我使用以下命令将依赖项递归下载到64位windows平台: pip3 download --only-binary=:all: --platform win_amd64 --implementation cp paramiko 能够递归下载依赖项,直到到达pycparser。这并不奇怪,因为我使用了--only binary=:all:标志。事情是-pip在传递--platform标志时强制

我正在尝试将的依赖项从linux主机下载到无法访问internet的windows目标

阅读上的示例后,我使用以下命令将依赖项递归下载到64位windows平台:

pip3 download --only-binary=:all: --platform win_amd64 --implementation cp paramiko
能够递归下载依赖项,直到到达pycparser。这并不奇怪,因为我使用了
--only binary=:all:
标志。事情是-
pip
在传递
--platform
标志时强制使用此标志:

ERROR: --only-binary=:all: must be set and --no-binary must not be set (or must be set to :none:) when restricting platform and interpreter constraints using --python-version, --platform, --abi, or --implementation.
终端产生以下输出:

Collecting paramiko
  Downloading paramiko-2.3.0-py2.py3-none-any.whl (182kB)
    100% |████████████████████████████████| 184kB 340kB/s 
  Saved ./paramiko-2.3.0-py2.py3-none-any.whl
Collecting pynacl>=1.0.1 (from paramiko)
  Using cached PyNaCl-1.1.2-cp35-cp35m-win_amd64.whl
  Saved ./PyNaCl-1.1.2-cp35-cp35m-win_amd64.whl
Collecting cryptography>=1.5 (from paramiko)
  Using cached cryptography-2.0.3-cp35-cp35m-win_amd64.whl
  Saved ./cryptography-2.0.3-cp35-cp35m-win_amd64.whl
Collecting pyasn1>=0.1.7 (from paramiko)
  Using cached pyasn1-0.3.5-py2.py3-none-any.whl
  Saved ./pyasn1-0.3.5-py2.py3-none-any.whl
Collecting bcrypt>=3.1.3 (from paramiko)
  Using cached bcrypt-3.1.3-cp35-cp35m-win_amd64.whl
  Saved ./bcrypt-3.1.3-cp35-cp35m-win_amd64.whl
Collecting cffi>=1.4.1 (from pynacl>=1.0.1->paramiko)
  Using cached cffi-1.11.0-cp35-cp35m-win_amd64.whl
  Saved ./cffi-1.11.0-cp35-cp35m-win_amd64.whl
Collecting six (from pynacl>=1.0.1->paramiko)
  Using cached six-1.11.0-py2.py3-none-any.whl
  Saved ./six-1.11.0-py2.py3-none-any.whl
Collecting asn1crypto>=0.21.0 (from cryptography>=1.5->paramiko)
  Using cached asn1crypto-0.22.0-py2.py3-none-any.whl
  Saved ./asn1crypto-0.22.0-py2.py3-none-any.whl
Collecting idna>=2.1 (from cryptography>=1.5->paramiko)
  Using cached idna-2.6-py2.py3-none-any.whl
  Saved ./idna-2.6-py2.py3-none-any.whl
Collecting pycparser (from cffi>=1.4.1->pynacl>=1.0.1->paramiko)
  Could not find a version that satisfies the requirement pycparser (from cffi>=1.4.1->pynacl>=1.0.1->paramiko) (from versions: )
No matching distribution found for pycparser (from cffi>=1.4.1->pynacl>=1.0.1->paramiko)
有没有办法克服这个问题?我是否必须手动安装非二进制软件包(及其依赖项)

谢谢, 乔伊。

你有两个选择:

  • 在同一平台上运行下载操作(注意相同)
  • 修复主机上的internet访问
  • 不要尝试其他花哨的方法,否则你会陷入困境:有些依赖项需要编译

    您可以在pip中使用
    --首选二进制
    选项。这将使PIP考虑的车轮更重要,即使它们是一个旧版本比现有的SDIST(SDIST是短的源分布)。如果没有发现兼容的控制盘,将选择sdist


    这是在PIP18.0中发布的(那是2018年初,pip现在正在使用CalVer)。

    在python3中,您可以下载如下所述的依赖项

    运行此命令时,必须在要保存的文件夹中

    pip download -r requirements.txt
    
    下载文件后,将其移动到要安装的计算机上即可安装

    然后运行这个命令

    pip install -r req.txt --no-index --find-links="/path/to/downloaded/files"
    

    无法工作,因为
    pycparser
    不提供任何控制盘,仅提供sdists。它确实可以工作,但您将无法获得最新版本的pycparser。您可以选择一个折衷方案——要么获取最新版本的wheel/sdist,要么选择最新的wheels。这与提问者的问题无关。它被明确要求进行跨平台下载。