2

Windows で setuptools (バージョン 0.6c11) を使用しており、console_scriptsエントリ ポイント経由でコンソール スクリプトをインストールするように指定しています。Linux では問題なく動作しますが、Windows では MinGW コンパイラを使用しているため、スクリプトはインストールされていません。インストール出力に関連するメッセージが表示されません。

ipython などの他のパッケージは正常に動作しており、実行後に .exe ファイルが動作し setup.py installます。

誰かがそれをデバッグする方法を提案できますか?

import setuptools
setup(
   # ...
   entry_points={
      'console_scripts':[
          'myprog = myMod:main'
      ]
   }
)

アップデート:

Vinay によって提示された例に基づいて (ありがとう!)、問題を切り分けることができました: モジュールがネストされたサブディレクトリにインストールされている場合、スクリプトは作成されません:

import setuptools, os.path, shutil

SOURCE = '''
def main():
    print('Hello, world!')
'''

### ERROR: when level of subdir is > 1, script is not created
subdir='subdir/subdir2'

### OK: with single-level subdirectory, everything works just fine
# subdir='subdir'

def prepare():
    # remove previous source
    if os.path.exists('subdir'): shutil.rmtree('subdir')
    # create subdirs as necessary
    os.makedirs(subdir)
    with open(subdir+'/my_mod.py', 'w') as f: f.write(SOURCE)

prepare()

setuptools.setup(
    name = 'myprog',
    version = '0.1',
    url = 'http://dummy.com/',
    author = 'Me',
    author_email = 'me@dummy.com',
    py_modules=['my_mod'],
    package_dir={'':subdir},
    entry_points={
        'console_scripts':['myprog = my_mod:main']
   },
   zip_safe=False
)

私は何package_dirのためにあるのか誤解していますか?

4

1 に答える 1

3

まあ、これは私のために働きます:

# This file is setup.py
import setuptools

SOURCE = '''
def main():
    print('Hello, world!')
'''

def prepare():
    with open('my_mod.py', 'w') as f:
        f.write(SOURCE)

prepare()

setuptools.setup(
    name = 'woo',
    version = '0.1',
    url = 'http://dummy.com/',
    author = 'Me',
    author_email = 'me@dummy.com',
    py_modules=['my_mod'],
    entry_points={
        'console_scripts':['myprog = my_mod:main']
   }
)

virtualenvで実行すると:

(venv) C:\temp\exemplar>python setup.py install
running install
running bdist_egg
running egg_info
writing woo.egg-info\PKG-INFO
writing top-level names to woo.egg-info\top_level.txt
writing dependency_links to woo.egg-info\dependency_links.txt
writing entry points to woo.egg-info\entry_points.txt
reading manifest file 'woo.egg-info\SOURCES.txt'
writing manifest file 'woo.egg-info\SOURCES.txt'
installing library code to build\bdist.win32\egg
running install_lib
running build_py
creating build
creating build\lib
copying my_mod.py -> build\lib
creating build\bdist.win32
creating build\bdist.win32\egg
copying build\lib\my_mod.py -> build\bdist.win32\egg
byte-compiling build\bdist.win32\egg\my_mod.py to my_mod.pyc
creating build\bdist.win32\egg\EGG-INFO
copying woo.egg-info\PKG-INFO -> build\bdist.win32\egg\EGG-INFO
copying woo.egg-info\SOURCES.txt -> build\bdist.win32\egg\EGG-INFO
copying woo.egg-info\dependency_links.txt -> build\bdist.win32\egg\EGG-INFO
copying woo.egg-info\entry_points.txt -> build\bdist.win32\egg\EGG-INFO
copying woo.egg-info\top_level.txt -> build\bdist.win32\egg\EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating 'dist\woo-0.1-py2.7.egg' and adding 'build\bdist.win32\egg' to it
removing 'build\bdist.win32\egg' (and everything under it)
Processing woo-0.1-py2.7.egg
creating c:\temp\venv\lib\site-packages\woo-0.1-py2.7.egg
Extracting woo-0.1-py2.7.egg to c:\temp\venv\lib\site-packages
Adding woo 0.1 to easy-install.pth file
Installing myprog-script.py script to C:\temp\venv\Scripts
Installing myprog.exe script to C:\temp\venv\Scripts

Installed c:\temp\venv\lib\site-packages\woo-0.1-py2.7.egg
Processing dependencies for woo==0.1
Finished processing dependencies for woo==0.1

(venv) C:\temp\exemplar>pip uninstall woo
Uninstalling woo:
  c:\temp\venv\lib\site-packages\woo-0.1-py2.7.egg
  c:\temp\venv\scripts\myprog-script.py
  c:\temp\venv\scripts\myprog.exe
Proceed (y/n)? y
  Successfully uninstalled woo

(venv) C:\temp\exemplar>

アップデート:

問題は、正しいパスセパレータを使用していないことです。

subdir ='subdir \\ subdir2'

私のために働いた。もちろん、おそらくを使用する必要がありますos.path.join()

于 2012-11-15T13:49:13.287 に答える