bri*_*fox 8 python setuptools python-2.7
我在我的ipad上使用python,需要一种方法从软件包setup.py中获取名称,版本,软件包等.我无权访问setuptools或distutils.起初我以为我会解析setup.py,但这似乎不是答案,因为有很多方法可以将args传递给setup().我想创建一个模拟setup()来返回传递给它的args,但我不确定如何通过导入错误.任何帮助将不胜感激.
您可以动态创建setuptools
模块并捕获传递给确实的值setup
:
>>> import imp
>>> module = """
... def setup(*args, **kwargs):
... print(args, kwargs)
... """
>>>
>>> setuptools = imp.new_module("setuptools")
>>> exec module in setuptools.__dict__
>>> setuptools
<module 'setuptools' (built-in)>
>>> setuptools.setup(3)
((3,), {})
Run Code Online (Sandbox Code Playgroud)
在上面之后,你就有了一个setuptools
带有函数的模块setup
。您可能需要创建更多函数才能使所有导入工作。之后您可以导入setup.py
并收集内容。话虽如此,总的来说,这是一种棘手的方法,因为它setup.py
可以包含任何具有条件导入和动态计算的 Python 代码,以将值传递给setup()
.
别开玩笑了 这适用于python 3.4.3和2.7.6;)
export VERSION=$(python my_package/setup.py --version)
Run Code Online (Sandbox Code Playgroud)
setup.py的内容:
from distutils.core import setup
setup(
name='bonsai',
version='0.0.1',
packages=['my_package'],
url='',
license='MIT',
author='',
author_email='',
description='',
test_suite='nose.collector',
tests_require=['nose'],
)
Run Code Online (Sandbox Code Playgroud)