18

我正在编写一个快速的 shell 脚本,以使我们的一些开发人员更容易运行 Fabric。(我也是 Python 新手。)安装 Fabric 的一部分是安装 pip,安装 pip 的一部分是安装 setuptools。

有没有什么简单的方法可以检测 setuptools 是否已经安装?我想让多次运行脚本成为可能,它会跳过已经完成的任何事情。就目前而言,如果您连续运行 ez_setup.py 两次,第二次将失败。

我的一个想法是在 /Scripts 文件夹下查找 easy_install 脚本。我可以使用 sys.executable 猜测 Python 根目录,然后换掉可执行文件名本身。但我正在寻找更优雅的东西(也许跨操作系统友好)。有什么建议么?

4

7 回答 7

25

试试这个命令。

$ pip list

它返回 和 的pip版本setuptools。否则尝试

$ pip install pil

如果这也不起作用,请尝试

$ which easy_install
于 2014-11-06T10:34:53.117 回答
13

这不是很好,但它会工作。

一个简单的python脚本可以做检查

import sys
try:
    import setuptools
except ImportError:
    sys.exit(1)
else:
    sys.exit(0)

或者

try:
    import setuptools
except ImportError:
    print("Not installed.")
else:
    print("Installed.")

然后只需在调用脚本中检查它的退出代码

于 2013-10-17T15:07:50.350 回答
4

只需在 IDLE 中运行以下代码:

import easy_install

如果它只是进入下一行,我认为它已安装。如果它说:

Error: invalid syntax

那么它可能没有安装。我知道这一点,因为我用它测试了 pip。也只需检查import pip是否预安装了 pip。:)

于 2015-04-05T08:18:41.097 回答
2

您可以通过运行以下命令行命令来检查 easy_install 和 setuptools:

which easy_install
#finds the path to easy_install if it exists

less path/to/easy_install
#where path/to/easy_install is the output from the above command
#this outputs your easy_install script which will mention the version of setuptools

如果安装了 easy_install/setuptools 包,上面第二个命令的输出可能会是这样的:

#EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==0.6c11','console_scripts','easy_install'
于 2013-12-20T19:45:06.303 回答
2

它预装了新版本的 Python。

pip3 list

足以确定它是为我安装的

于 2015-04-27T04:36:37.993 回答
0

如果已安装,这将显示您的 setuptools 的版本

$python -c "import sys; import setuptools; print(setuptools.version.__version__)"

于 2019-06-20T10:11:39.623 回答
0

取决于安装的 python 版本。您可以尝试"pip list""pip3 list"检查安装的 setuptools 和版本。

于 2020-05-28T10:07:47.067 回答