Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
收到';can';找不到'__主&';模块输入'&书信电报;packageName>';使用python包_Python_Python 2.7_Command Line_Packaging - Fatal编程技术网

收到';can';找不到'__主&';模块输入'&书信电报;packageName>';使用python包

收到';can';找不到'__主&';模块输入'&书信电报;packageName>';使用python包,python,python-2.7,command-line,packaging,Python,Python 2.7,Command Line,Packaging,我试图在野外发布我的第一个Python包,我成功地在PyPi上安装了它,并且能够进行pip安装。当我尝试通过命令行($python etlTest)运行包时,收到以下错误: /usr/bin/python:在“etlTest”中找不到“\uu main\uuuuuuuuuu”模块 当我直接从IDE运行代码时,它可以正常工作。我使用的是Python2.7,在需要的地方有\uuuu init\uuuu.py脚本。我需要做什么才能让它工作?我可以很容易地复制您的问题,实际上甚至不用使用您的软件包: $

我试图在野外发布我的第一个Python包,我成功地在PyPi上安装了它,并且能够进行
pip安装
。当我尝试通过命令行(
$python etlTest
)运行包时,收到以下错误:

/usr/bin/python:在“etlTest”中找不到“\uu main\uuuuuuuuuu”模块


当我直接从IDE运行代码时,它可以正常工作。我使用的是Python2.7,在需要的地方有
\uuuu init\uuuu.py
脚本。我需要做什么才能让它工作?

我可以很容易地复制您的问题,实际上甚至不用使用您的软件包:

$ python empty
.env/bin/python: can't open file 'empty': [Errno 2] No such file or directory
$ mkdir empty
$ python empty
.env/bin/python: can't find '__main__' module in 'empty'
$ python Empty
.env/bin/python: can't find '__main__' module in 'Empty'
因此,您根本没有调用您的库,您只是给Python解释器一个不存在的脚本名,如果工作目录中有一个同名目录(甚至不区分大小写),它会尝试执行它

我可以从PyPi安装您的软件包,并且可以正常导入,但似乎没有任何入口点,在顶层没有导出任何有用的内容,也没有可执行脚本添加到Python bin:

>>> import etltest
>>> dir(etltest)
['__author__', '__builtins__', '__doc__', '__file__', '__name__', '__package__',
'__path__', '__version__']
按照中的建议直接运行etlTest.py也不起作用:

$ python .env/lib/python2.7/site-packages/etltest/etlTest.py
2014-07-13 17:19:56,831 - settings - DEBUG - Attempting to load .env/lib/python2.7/site-packages/.etltest-settings.yml
2014-07-13 17:19:56,832 - settings - WARNING - No such file or directory .env/lib/python2.7/site-packages/.etltest-settings.yml
2014-07-13 17:19:56,832 - settings - DEBUG - Attempting to load .env/lib/python2.7/site-packages/.etltest-settings.yml
2014-07-13 17:19:56,832 - settings - WARNING - No such file or directory .env/lib/python2.7/site-packages/.etltest-settings.yml
2014-07-13 17:19:56,832 - settings - WARNING - Could not find settings file in .env/lib/python2.7/site-packages/.etltest-settings.yml,.env/lib/python2.7/site-packages/.etltest-settings.yml. Using defaults where present.
Traceback (most recent call last):
  File ".env/lib/python2.7/site-packages/etltest/etlTest.py", line 73, in <module>
    main(sys.argv[1:])
  File ".env/lib/python2.7/site-packages/etltest/etlTest.py", line 22, in main
    SettingsManager().first_run_test()
  File ".env/lib/python2.7/site-packages/etltest/utilities/settings_manager.py", line 29, in __init__
    self.app_name = etltest_config['app_name']
KeyError: 'app_name'
$python.env/lib/python2.7/site-packages/etltest/etltest.py
2014-07-13 17:19:56831-设置-调试-尝试加载.env/lib/python2.7/site packages/.etltest-settings.yml
2014-07-13 17:19:56832-设置-警告-没有这样的文件或目录。env/lib/python2.7/site packages/.etltest-settings.yml
2014-07-13 17:19:56832-设置-调试-尝试加载.env/lib/python2.7/site packages/.etltest-settings.yml
2014-07-13 17:19:56832-设置-警告-没有这样的文件或目录。env/lib/python2.7/site packages/.etltest-settings.yml
2014-07-13 17:19:56832-设置-警告-在.env/lib/python2.7/site packages/.etltest settings.yml、.env/lib/python2.7/site packages/.etltest-settings.yml中找不到设置文件。在存在的地方使用默认值。
回溯(最近一次呼叫最后一次):
文件“.env/lib/python2.7/site packages/etltest/etltest.py”,第73行,在
main(sys.argv[1:])
文件“.env/lib/python2.7/site-packages/etltest/etltest.py”,第22行,主目录
SettingsManager()。第一次运行测试()
文件“.env/lib/python2.7/site packages/etltest/utilities/settings_manager.py”,第29行,在__
self.app_name=etltest_config['app_name']
KeyError:“应用程序名称”

我想说你的包裹还不适合分发。您可能希望清理开发环境中的一些依赖项,并阅读以随包提供适当的命令行可执行文件。如果不是某种测试版本,默认情况下它不应该在调试模式下运行。

我最近也遇到了同样的问题,最终自己找到了解决方案。 因此,正如错误所说,我在我的
\uuuu init\uuuuuuuuuuuuuupy
所在的路径上添加了一个文件

\uuuu main\uuuuu.py
中,我添加了以下代码:

 from mypackage.mymodule import main 
      main() 
main()
是我代码的主要功能。现在它的工作

这里是我的目录:

package 
|__dirpackage
   |_mypackage.py
   |_ __init__.py
   |_ __main__.py
|_setup.py`

只需将名称uuu init_uuuuuuuuuuy.py文件更改为uuuu main_uuuuuuuuuuuy.py

我遇到了同样的问题,并通过确保我位于您尝试运行的包的正确目录中解决了这个问题


对于Windows,在控制台中键入
dir
,而在Linux/macOS上键入
ls
查看当前目录

您能否详细说明一下“通过命令行运行包”和“直接运行代码”的含义?你能举一个命令的例子吗?当然可以-当我通过命令行运行包时,我指的是我构建和安装的包,并使用
python-etlTest
运行它。当我直接运行代码时,我指的是从IDE中运行代码。在不了解更多代码的情况下,很难猜测。@OpenDataAlex什么是etlTest,Python文件?如果你想看一看,我的代码在GitHub上:主文件可以在etlTest/etlTest.py@famousgarkin上找到,这是我正在构建的一个开源测试工具。谢谢-这非常有帮助!我会把包裹清理干净,然后再试一次。我在打包etlTest时忘记了更改设置,这就是它在调试模式下运行的原因。