我在防火墙后面的机器上有一个项目,安装了 PyCharm,我正在尝试为其添加一些结构。因此,我试图创建某种我想在重组项目时编辑/开发的实用模块。我希望这些实用程序能够在计算机(Windows)上全局访问,因为有人创建了许多具有交叉引用和导入的 PyCharm 项目,使用
import sys
import os
sys.path.insert(1, os.path.expanduser("path2otherProjectDirectory"))
from otherProjectDirectory import foo
如何在“site-packages”中创建包或引用,以便我可以在计算机上全局使用我的实用程序(最好是手动而不使用 pip)?
首先,我尝试使用 setup.py 创建一个包并通过 pip 安装它。 我发现 setup.py 在某种程度上已被弃用(这本身就是一个很长的故事),并且我不确定创建轮子是否适用于可编辑的包。 pip 还尝试使用互联网上的资源来构建依赖关系。事实是,这台机器位于防火墙后面。我可以使用代理通过 PyCharm 或 pip 安装软件包,但我无法使用与我自己的软件包相同的代理来访问任何内容:
pip install -e /path/to/utils/ --proxy 10.1.2.3:1234
它会导致此错误消息:
Installing build dependencies ... error
error: subprocess-exited-with-error
× pip subprocess to install build dependencies did not run successfully.
│ exit code: 1
╰─> [7 lines of output]
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at ....>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed')': /simple/setuptools/
我也尝试过使用:
pip install -e --no-index --find-links /path/to/utils/
pip install -e /path/to/utils/ --no-index
但是这个包被“忽略”了,或者我遇到了像上面这样的错误(我之前提到的故事的一部分):
ERROR: Could not find version that satisfies the requirement setuptools>=40.8.0 (frim version: none)
ERROR: No matching distribution found for setuptools>=40.8.0
我一直认为setuptools包含在python安装中。我必须自己安装它(通过 pip 或 Pycharm),但这似乎也没有帮助(出现同样的问题)。所以现在我放弃pip了。我的意思是,您可以简单地将一个包放入“site-packages”中,它会加载得很好,但无法编辑,对吧?使用“-e”/“--editable”时 pip 在做什么?有没有办法手动完成?
我还尝试了将包安装为可编辑的多个具有相同顶级模块的包会破坏导入。
我使用的是 Windows 10、Python 3.13 和 setuptools 75.4.0。
该错误听起来像是您的包需要构建
setuptools
(可能是因为包的 build-system.requires
TOML 键这么说),并且负责该构建的 pip 子进程无法获取您的 --proxy
设置。
尝试使用另一种方法配置代理 – 我会首先尝试使用http_proxy
/
https_proxy
环境变量。然后,您还可以使用
pip wheel -e .
让 Pip 收集当前目录中包的所有需求,这样您将来就不需要互联网连接来处理这些依赖项。