【问题标题】:install a module without pip/easy_install or "python setup.py install"安装没有 pip/easy_install 或“python setup.py install”的模块
【发布时间】:2023-12-16 17:32:02
【问题描述】:

我正在尝试安装 ptyprocess 模块:https://github.com/pexpect/ptyprocess

我无法执行“pip install ptyprocess”,因为我的 pip 被服务器上的 ssl 问题阻止。

此外,我无法克隆上述存储库并运行“python setup.py install”,因为存储库中没有 setup.py;相反,有一个 pyproject.toml 需要“pip install pyproject.yoml”,但同样,这依赖于被阻止的 pip。

那么我该如何安装这个模块呢?

附言我已经通过 github 在我的服务器上安装了其他模块,但是它们具有所需的“setup.py”而不是“pyproject.toml”,因此我能够成功运行“python setup.py install”。

【问题讨论】:

标签: python


【解决方案1】:

要安装模块,请将pytprocess 文件夹(或包含最顶层__init__.py 的任何文件夹)复制到您的site-packages(通常在{python location}\lib\site-packages)目录中。您可能还需要手动安装依赖项(在本例中为 flit)。请注意,这只适用于包是纯 python 的情况。

【讨论】:

  • 您好,非常感谢。这解决了我的问题。 +1。 p.s.你说的*__init__.py是什么意思?其中有两个,每个在不同的目录中。
  • 在python中,__init__.py的出现表示文件夹是库的根文件夹。模块必须是站点包中的单个文件或单个文件夹容器 __init__.py 包通常有一个 __init__.py 用于根目录,可能还有其他子文件夹中的其他子模块。单独根文件夹中的__init__.py 通常表示不同的相关模块,可能用于对主模块或类似模块进行单元测试。
【解决方案2】:

我的 pip 被服务器上的 ssl 问题阻止

抛开你的实际问题,你也应该解决这个问题


关于您的问题,如果您尝试安装的软件包位于 PyPi 上(pip 通常会在其中查找软件包),那么您始终可以选择先从 files section of the projects page 手动下载它,然后再安装它.在这种情况下,有两个文件可用:

  1. ptyprocess-0.6.0-py2.py3-none-any.whl - 这是一个 whl 文件,它是由 setuptools 创建的预打包文件。它与 python2 和 3 版本兼容,并且没有操作系统限制(“任何”)。下载后,您可以使用pip install ptyprocess-0.6.0-py2.py3-none-any.whl 进行安装
  2. ptyprocess-0.6.0.tar.gz这是源码,可以使用pip install ptyprocess-0.6.0.tar.gz安装。

如果pip 无法下载和安装项目本身,此解决方案当然特定于 PyPi 上可用的包作为解决方法。如果您只是在第二台机器上下载必要的文件然后将它们复制过来,它也适用于离线机器上的pip install

【讨论】: