有人知道pip3安装是如何工作的吗? ,执行步骤的顺序是什么?是否在将软件包内容复制到软件包之前安装了依赖项?
我创建了python包并将其放在Pypi服务器上。它有很多依赖关系,其中一个是netFilterQueue。因为我的项目使用的是Python3.4 和netfilterQueue适用于Python2.7,我编写了我的代码,以便在setup.py中安装它。它基本上改变了netfilterqueue的准备和修补版本的路径,并尝试运行其setup.py。 所以nfq / NetfilterQueue-0.3.1-P3.3下的东西就是那个,并且包含在包中。 具体来说,它看起来像这样(添加了一些打印命令来检查它有什么问题):
parent_dir = os.path.dirname(os.path.abspath(__file__))
nfq_dir = os.path.join(parent_dir, 'nfq', 'NetfilterQueue-0.3.1-P3.3')
for f in listdir(parent_dir):
print("package item:", f)
try:
if hasattr(sys, 'real_prefix'):
python = 'python' # virtualenv install
else:
python = 'python3.4' # normal install
os.chdir(nfq_dir)
subprocess.check_call([python, 'setup.py', 'install'])
os.chdir(parent_dir)
当我手动从Pypi下载软件包并解压缩时,我尝试使用sudo python3.4 setup.py install安装它, 它工作正常。 问题是当我使用sudo pip3安装Mypackage时。
最终出现错误消息(上述执行代码的结果):
error: [Errno 2] No such file or directory: '/tmp/pip_build_root/Mypackage'
NetfilterQueue目录:
/tmp/pip_build_root/Mypackage/nfq/NetfilterQueue-0.3.1-P3.3
我认为parent_dir = os.path.dirname(os.path.abspath( file )) 是实际运行setup.py的实际位置。 但也许我错了。
任何人都可以对它有所帮助并帮助解决它吗?