如何在Python中运行'python setup.py install'?

时间:2010-12-12 00:17:34

标签: python

我正在尝试创建一个用于启动python应用程序的通用python脚本,我想安装任何依赖的python模块,如果它们从目标系统中丢失的话。如何从Python本身运行命令行命令'python setup.py install'的等效命令?我觉得这应该很容易,但我无法弄清楚。

8 个答案:

答案 0 :(得分:8)

答案 1 :(得分:7)

您可以使用subprocess模块:

import subprocess
subprocess.call(['python', 'setup.py', 'install'])

答案 2 :(得分:5)

对于那些使用setuptools的人,您可以使用setuptools.sandbox

from setuptools import sandbox
sandbox.run_setup('setup.py', ['clean', 'bdist_wheel'])

答案 3 :(得分:2)

import os
string = "python setup.py install"
os.system(string)

答案 4 :(得分:1)

这对我有用(py2.7)
我有一个可选模块,其setup.py位于主项目的子文件夹中。

from distutils.core import run_setup [..setup(..) config of the main project..] run_setup('subfolder/setup.py', script_args=['develop',],stop_after='run')

由于

<强>更新
挖了一会儿 你可以在distutils.core.run_setup找到

'script_name' is a file that will be run with 'execfile()';
'sys.argv[0]' will be replaced with 'script' for the duration of the
call.  'script_args' is a list of strings; if supplied,
'sys.argv[1:]' will be replaced by 'script_args' for the duration of
the call.

所以上面的代码应改为

import sys
from distutils.core import run_setup
run_setup('subfolder/setup.py', script_args=sys.argv[1:],stop_after='run')

答案 5 :(得分:1)

试试这个

sudo apt install python-dev  # or python3-dev
pip install --user cython    # or pip3

然后

import os.path
from distutils.core import setup
from distutils.extension import Extension

from Cython.Distutils import build_ext
from Cython.Shadow import *  # This is important!

if __name__ == "__main__":
    setup(
        script_args=["build_ext", "--inplace"],  # Simulate CLI arguments
        cmdclass={'build_ext': build_ext},
        zip_safe=False,
        ext_modules=[
            Extension("hello",
                      ["hello.pyx"],
                      language='c++',
                      include_dirs=[os.path.dirname(__file__)])]  # Same folder
    )

如果 hello.pyxinclude_dirs 位于同一文件夹中,则运行上述脚本将在同一文件夹中放置一个 hello.cpp 和一个 hello.so (Linux) 文件.享受以编程方式调用 Cython 的乐趣。

然后就是

#!/usr/bin/env python
import hello

参考:https://cython.readthedocs.io/en/latest/src/quickstart/build.html

答案 6 :(得分:0)

只需导入它。

import setup

答案 7 :(得分:0)

迟到了 - 但如果有人像我一样在这里发现他/她 - 这对我有用; (python 3.4)。我的脚本是setup.py中的一个包。注意,我相信你必须在setup.py上有chmod + x。

cwd = os.getcwd()
parent = os.path.dirname(cwd)
os.chdir(parent)
os.system("python setup.py sdist")