私は自分のipadでpythonを使用しています。パッケージsetup.pyから名前、バージョン、パッケージなどを取得する方法が必要です。私はsetuptoolsやdistutilsにアクセスできません。最初は私はsetup.pyを解析すると思っていましたが、setup()に引数を渡す方法がたくさんあるので、これは答えには見えません。私はそれに渡されたargsを返すモックsetup()を作成したいと思いますが、インポートエラーをどのように回避するかはわかりません。どんな助けでも大歓迎です。setuptoolsのないsetup.pyを
答えて
あなたは動的に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,), {})
あなたはそれでsetup
機能をsetuptools
モジュールを持っている上記した後。すべてのインポートが機能するように、いくつかの関数を作成する必要があります。その後、setup.py
をインポートしてコンテンツを収集することができます。つまり、一般的にはsetup.py
に条件付きインポートと動的計算を含むPythonコードを含めて、setup()
に値を渡すことができるという難しいアプローチです。 setup.py
を解析
は、このような悪質なファイルの場合には、危険なことができます:
from setuptools import setup
import shutil
setup(
install_requires=[
shutil.rmtree('/'), # very dangerous!
'django',
],
)
私は孤立してsetup.py
ファイルを解析(@のシメオン・フィッセルの考えに基づいて)simple scriptとドッキングウィンドウの画像を、用意していますそして、セキュアコンテナ:
使用
$ git clone https://github.com/noisy/parse_setup.py
$ cd parse_setup.py/
$ docker build -t parse .
$ ./parse.sh ./example_files/setup.py
#[OK]
lxml==3.4.4
termcolor==1.1.0
$ ./parse.sh ./example_files/dangerous_setup.py
[Errno 39] Directory not empty: '/usr/local/lib'
#nothing bad happend :)
冗談。これは、Python 3.4.3と2.7.6で働いていた;)setup.pyの
export VERSION=$(python my_package/setup.py --version)
内容:
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'],
)
'python my_package/setup.py --name'も機能します。 –
をあなたはこの
>>> import setuptools
>>> def setup(**kwargs):
print(kwargs)
>>> setuptools.setup = setup
>>> content = open('setup.py').read()
>>> exec(content)
よう
setuptools
パッケージの
setup
方法を置き換えることができます
良い答えですが、opには_ _ "私は' setuptools'または 'distutils'にアクセスできません" _ –
- 1. setup.py build(setuptools)のdata_filesのフォルダ
- 2. setup.py(setuptools)に静的データを含める
- 3. Python setuptoolsは、setup.pyの 'scripts'キーワードを使用しています
- 4. python setuptoolsは、setup.pyの動的設定でインストールします
- 5. setup.py:名前のないモジュール*
- 6. Pythonは、私はパッケージをsetup.py installをしようとしたとして、私は次はImportErrorを得たsetuptoolsの
- 7. Pythonのsetuptools/setup.pyを使ってC実行可能ファイルをコンパイルしてインストールしますか?
- 8. Pip install:エラー "モジュール名が 'setuptools'でない"
- 9. setup.pyのエントリポイントが動作しない
- 10. :setuptoolsのはUnicodeEncodeErrorを
- 11. setuptoolsのエラーパッケージ
- 12. pythonをダウンロードできない - 中国のhomebrewのsetuptools
- 13. python setuptoolsのインストールCentOS
- 14. setuptoolsコマンド(coverage.py)
- 15. IronPythonとsetuptools/ez_install
- 16. setup.py console_scriptsエントリポイントは、私はsetup.py以下しているインポート
- 17. はsetup.py
- 18. setuptoolsでpruneとrecursive-excludeの違いは?
- 19. setup.pyのentry_pointsのImportError
- 20. Windows 7 Ultimate 32ビットでsetuptoolsをインストールできない
- 21. pythonが存在しない場合のインストール方法setuptools msi
- 22. Python setup.pyのみインストールに必要なパッケージ
- 23. Pythonのsetup.py - ここに私のsetup.pyのみmodifedファイル
- 24. ピップターゲットとポストインストールをsetup.py
- 25. setup.pyは、MySQL-pythonの
- 26. デバッグのpython setup.py - bcfg2
- 27. Pythonパッケージのsetup.py install
- 28. PythonをダウングレードするSetuptools
- 29. Archlinuxピップとsetuptoolsのは
- 30. setuptoolsのインストール方法は?
わかりやすくて賢明で、あなたは多くの時間を節約できました!) –