我已经将一个python模块上传到pypi并在本地安装了模块:
pip install microarray_quantilenorm
我试图在命令行上使用传递参数运行模块。
当我直接从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,my __init__.py或其他地方是否存在问题。感谢。
答案 0 :(得分:2)
__main__.py
的重点在于,当程序包作为模块运行时,它是运行的文件。换句话说,只需python -m microarray_quantilenorm
,而不是python -m microarray_quantilenorm.__main__
。
然而,通常,有一个更好的解决方案。假设您正在使用setuptools
而不是尝试手动完成整个混乱,请使用console_scripts
entry point。这将使安装过程自动创建一个名为microarray_quantilenorm
的脚本,并将其安装在bin
或scripts
目录中,该目录正确地加载包并运行其主代码(或者,如果您愿意,还可以使用其他代码。)