【发布时间】:2012-11-07 13:47:07
【问题描述】:
我在 Windows 上使用 setuptools(版本 0.6c11),并指定要通过 console_scripts 入口点安装的控制台脚本。它在 Linux 上运行良好,但在 Windows 下,使用 MinGW 编译器,没有安装脚本。我在安装输出中没有看到任何相关消息。
其他包,如 ipython,运行良好,运行 setup.py install 后有工作的 .exe 文件。
有人可以建议一种调试方法吗?
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 的用途吗?
【问题讨论】:
-
我添加了一个更新以响应您的反例。
-
回应您的第二条评论:我会说“错误”,因为“/”是 Windows 上的有效目录分隔符,但谁知道错误在哪里?也许它应该记录在
distribute(如果还没有的话)。 -
@VinaySajip:我会尝试找出它在源代码中发生的位置。我同意应该报告它,因为
package_dir与/配合良好(发现包等),它只是脚本创建失败。
标签: python console setuptools