Python3.3中的包管理-最好使用哪些工具?

Python3.3中的包管理-最好使用哪些工具?,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我对Python比较陌生,并且正在一个非常小的XML解析脚本中使用它。我对各种Python版本以及它们的包管理器感到完全困惑 我使用的是Ubuntu13.10,它似乎是从新安装中预装的Python2.7和Python3.3 在virtualenv之外,我可以通过提示符访问这两个版本: >which python /usr/bin/python >which python2 /usr/bin/python2 >which python3 /usr/bin/python3 前

我对Python比较陌生,并且正在一个非常小的XML解析脚本中使用它。我对各种Python版本以及它们的包管理器感到完全困惑

我使用的是Ubuntu13.10,它似乎是从新安装中预装的Python2.7和Python3.3

在virtualenv之外,我可以通过提示符访问这两个版本:

>which python
/usr/bin/python

>which python2
/usr/bin/python2

>which python3
/usr/bin/python3
前两个符号链接到同一个python2.7二进制文件,第三个符号链接到python3.3二进制文件。这一切都很有道理

我还了解到python3.3附带pyvenv用于为python3.3创建virtualenvs

>pyvenv-3.3 mynewproject
使用bin目录和自包含的python3.3解释器等创建一个新的虚拟环境。要使用此环境,我只需:

>source <path-to-mynewproject>/bin/activate
一切都很好,明白了。这很有道理。然而现在却出现了困惑。我是否使用easy_安装?皮普?Setup.py?分配这么多的包管理器是什么?我在哪里买的?它们与Python2.7或Python3.3一起工作吗?或者两者都有?在我的新virtualenv中,哪些会起作用?我在乎吗

简言之,考虑到我只打算进行Python3.3+开发,而且我不想破坏我的系统,这无疑需要Python2.7软件包,那么我进行软件包管理的最佳、经认可的、受支持的规范方式是什么

说真的,怎么回事?完全糊涂了

谢谢你的帮助

用virtualenvs隔离一切 pip和easy_install都是软件包管理器。您可以同时使用它们,但我更喜欢pip setup.py只是distutils的脚本,pip和easy_install都使用setup.py安装软件包。 如果您在virtualenvs中运行python,它将阻止您卸载或更新会破坏系统的软件包。那么pip和easy_安装之间的选择就不那么明确了。理论上,pip较新,但由于某些原因,他们安装软件包的方式可能在pip上工作,而不是在easy_安装上。当您必须处理必须编译的本机库时,就会出现这些问题。。。很难说哪一个更好,但那个有效的应该可以做到这一点,因为他们正在同一个目录中安装软件包


除非在pypi中无法使用setup.py安装软件包,否则不需要使用setup.py安装软件包。如果您将setup.py所在的目录传递给它,pip也会使用setup.py安装软件包

如果制作包,请确保可以使用setup.py使用distutils安装。然后您可以将其发布到pypi

此外,据我所知,许多教程都没有使用VirtualNV,甚至可能在教程中编写以下内容:

sudo pip install ..
sudo easy_install ..
请注意,如果您使用的是virtualenv,则永远不必使用sudo,如果您使用的是sudo,则它可能会在系统范围内安装软件包,因为它不会从virtualenv中的用户运行,而是从根用户运行

建议阅读者:

用virtualenvs隔离一切 pip和easy_install都是软件包管理器。您可以同时使用它们,但我更喜欢pip setup.py只是distutils的脚本,pip和easy_install都使用setup.py安装软件包。 如果您在virtualenvs中运行python,它将阻止您卸载或更新会破坏系统的软件包。那么pip和easy_安装之间的选择就不那么明确了。理论上,pip较新,但由于某些原因,他们安装软件包的方式可能在pip上工作,而不是在easy_安装上。当您必须处理必须编译的本机库时,就会出现这些问题。。。很难说哪一个更好,但那个有效的应该可以做到这一点,因为他们正在同一个目录中安装软件包


除非在pypi中无法使用setup.py安装软件包,否则不需要使用setup.py安装软件包。如果您将setup.py所在的目录传递给它,pip也会使用setup.py安装软件包

如果制作包,请确保可以使用setup.py使用distutils安装。然后您可以将其发布到pypi

此外,据我所知,许多教程都没有使用VirtualNV,甚至可能在教程中编写以下内容:

sudo pip install ..
sudo easy_install ..
请注意,如果您使用的是virtualenv,则永远不必使用sudo,如果您使用的是sudo,则它可能会在系统范围内安装软件包,因为它不会从virtualenv中的用户运行,而是从根用户运行


建议阅读人:

建议阅读:。建议阅读:。考虑到Python打包情况的复杂性,这是一个非常好的答案-我不可能用这么少的单词写出一个有用的答案-@非常感谢。Python2.7和Python3.3是否需要不同版本的Pip?我是否只安装一次,这样如果在virtualenv外部使用,它将在系统范围内安装软件包,但如果激活virtualenv,它将只安装到该环境?这就是它的工作原理,还是我需要配置Pip以便与virtualenv一起使用?谢谢again@us
er3231690创建virtualenv时,它应该自行安装pip。是的,这就是它的工作原理。还有一个注意事项,如果你看到教程要求sudopip。。。如果你是在虚拟环境中,不要使用sudo。sudo会将用户改为root用户并在系统范围内安装。@LukasGraf我想有很多细微差别。没有必要使用setup.py安装软件包,除非它们在pypi中不可用。它的含义不太正确:您也可以使用pip any_path/package_dir_to_be_installed来安装您下载的内容从网络上的任何地方,甚至本地创建。因此,当我在非ubuntu系统上创建一个新的virtualenv或venv时,我会先引导easy_install,然后再引导easy_install pip-@非常感谢。Python2.7和Python3.3是否需要不同版本的Pip?我是否只安装一次,这样如果在virtualenv外部使用,它将在系统范围内安装软件包,但如果激活virtualenv,它将只安装到该环境?这就是它的工作原理,还是我需要配置Pip以便与virtualenv一起使用?谢谢again@user3231690创建virtualenv时,它应该自行安装pip。是的,这就是它的工作原理。还有一个注意事项,如果你看到教程要求sudopip。。。如果你是在虚拟环境中,不要使用sudo。sudo会将用户改为root用户并在系统范围内安装。@LukasGraf我想有很多细微差别。没有必要使用setup.py安装软件包,除非它们在pypi中不可用。它的含义不太正确:您也可以使用pip any_path/package_dir_to_be_installed来安装您下载的内容从网络上的任何地方,甚至本地创建。因此,当我在非ubuntu系统上创建一个新的virtualenv或venv时,我会先引导easy_安装,然后再引导easy_安装pip。