0

setup.py installビルド中の Python パッケージを実行するときに、生成されていないスクリプトを取得しようとしています。

distutils のドキュメントを読みましたが、これを達成する方法に関する明確な例が見つかりませんでした。

Mercurial は、以下をインポートすることでこれを部​​分的に行いinstall_scriptsます。

from distutils.command.install_scripts import install_scripts

そして、hgスクリプト内のいくつかのものを置き換えます。このhg実行可能ファイルは、次のようなものを使用するデフォルトの動作をオーバーライドして使用されます。

#!/Users/alfredo/python/foo/bin/python  
# EASY-INSTALL-SCRIPT: 'foo==0.0.1','foo'
__requires__ = 'foo==0.0.1'
import pkg_resources
pkg_resources.run_script('foo==0.0.1', 'foo')

pkg_resources を使用してパッケージをインポートするのではなく、使用しているスクリプトで終了しようとしています。fooこれが自動生成される理由はわかっていますが、それでも別のルートに進みたいと思っています。

これは、私が使用している基本 setup.py のコピーです。

import distribute_setup
distribute_setup.use_setuptools()
from setuptools import setup

tests_require = ['pytest']

setup(
name = "foo",
version = "0.0.1",
packages = ['_foo'],

scripts = ['foo'],
zip_safe = False,
package_data = {'': ['distribute_setup.py']},
author = "Alfredo Deza",
author_email = "alfredodeza [at] gmail [dot] com",
description = "",
long_description = """\
Foo
""",
classifiers=[
    'Development Status :: 4 - Beta',
    'Intended Audience :: Developers',
    'License :: OSI Approved :: MIT License',
    'Topic :: Software Development :: Build Tools',
    'Programming Language :: Python :: 2.5',
    'Programming Language :: Python :: 2.6',
    'Programming Language :: Python :: 2.7',
  ],

license = "MIT",
keywords = "",
url = "",   

)
4

2 に答える 2

1

何日も掘り下げた後...Mercurialは特別なことを何もしていないことがわかりました。

彼らは多くのことをしますが、実際にはpkg_resourcesがスクリプトにリンクしていなくてもスクリプトを正しくインストールすることを妨げるものは何もsetup.pyありません。

では、違いは何ですか?

違いは、私がDistributeを使用していることです。それが機能する方法は、setup(setuptoolsの代わりに)独自のモジュールをオーバーライドするため、インストールに対して独自の異なる動作をします。

私の場合、スクリプトをインストールするの方法は、スクリプトfooがeggの場所にコピーされ、foopkg_resourcesとそのバージョンへのリンクをインポートするスクリプトを介してリンクされることを意味します。

これは私が望んでいることではなく、Distributeのドキュメントが見つかりませんでしただし、後でアンインストールする方法を提供するためにそうすることは明らかです。

だから注意してください!あなたが私の道を進みたいのなら、あなたがものをアンインストールしたいのならあなたは問題を抱えているでしょう。

Distributeでスクリプトにコピーする内容をカスタマイズする方法が提供されなくなるまで、通常の状態に戻す必要があります。setuptools

于 2010-12-24T19:11:01.633 に答える
0

IIRC、インストール時--single-version-externally-managedの引数の使い方はお好みで。

于 2010-12-24T18:43:22.830 に答える