2015-05-06 33 views
1

我上传一个Python模块的PyPI和本地安装该模块:用命令行参数创建Python模块

PIP安装microarray_quantilenorm

我试图与pass-命令行运行模块通过论据。

当我从site-packages直接调用python脚本时,一切正常。

python /site-packages/microarray_quantilenorm/microarray_quantilenorm.py *csv 

但呼吁:

python -m microarray_quantilenorm.__main__ *csv 

OR:在

python -m microarray_quantilenorm *csv 

结果:

/anaconda/bin/python: No module named microarray_quantilenorm.__main__ 

我不能追查到是否有setup.py问题,我的__init__.py或其他地方。谢谢。

回答

2

__main__.py的整点在于它是当程序包作为模块运行时运行的文件。换句话说,只要做python -m microarray_quantilenorm,而不是python -m microarray_quantilenorm.__main__

但是,通常还有更好的解决方案。假设您使用setuptools而不是尝试手动完成整个混乱,请使用console_scripts entry point。这将使安装过程自动创建一个名为microarray_quantilenorm的脚本,并将其安装在您的binscripts目录中,该目录正确加载软件包并运行其主代码(或者,如果您愿意,还可以使用其他代码)。

+0

有关console_scripts语法的问题,我将使用什么语法来调用脚本?使用microarray_quantilenorm = microarray_quantilenorm:主要结果在错误。 – user2277435

+0

@ user2277435:参见[文档](http://pythonhosted.org/setuptools/setuptools.html#automatic-script-creation)。但首先,你是否记得引号?其次,'main'是要调用的_function_的名称。你的'microarray_quantilenorm .__ main__'是否有'main'函数?如果这还不足以提供帮助,我会建议创建一个新问题,您可以在其中包含详细信息,例如结果是什么错误以及确切地说明了您放置的位置。 – abarnert

+0

是的,基于文档无法看到使用哪种语法,但在setup.py中用引号调用它。是的,我的Python脚本包含一个主要功能。如果我在更多时间后无法解决问题,我将作为单独问题发布。再次感谢你。 – user2277435