python - 模块可以在控制台导入,但不能在脚本内导入

标签 python linux module python-module env

当我运行脚本时遇到一个奇怪的问题,我无法加载pymongo,但当我运行hashbang解释器(/usr/bin/env python)时它可用。

最初的调用import pymongo被深深地埋在一个类中,但即使我在第1行调用它,它也会失败。

这是为什么?

以下是 python 控制台的一些输出,显示 pymongo 可用:

# /usr/bin/env python
Python 2.7.4 (default, Apr 23 2013, 14:02:51)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymongo
>>> 

这是脚本的前三行

# head -n 3 ./app/app.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pymongo

这是失败的:

# python ./app/app.py
Traceback (most recent call last):
  File "./app/app.py", line 3, in <module>
    import pymongo
ImportError: No module named pymongo

但是使用 /usr/bin/env 运行可以正常...为什么?

# /usr/bin/env python ./app/app.py
Traceback (most recent call last):
  File "./app/app.py", line 37, in <module>
    db = backend.flowbackend.getBackendObject(config.db_backend, config.db_host, config.db_port, config.db_user, config.db_password, config.db_name)
      File "./app/../lib/backend/flowbackend.py", line 268, in getBackendObject
    return MongoBackend(host, port, user, password, databaseName)
  File "./app/../lib/backend/mongobackend.py", line 13, in __init__
    self.connect()
  File "./app/../lib/backend/mongobackend.py", line 62, in connect
    self.conn = pymongo.Connection(self.host, self.port)
  File "/usr/local/lib/python2.7/site-packages/pymongo/connection.py", line 220, in     __init__
    max_pool_size, document_class, tz_aware, _connect, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/pymongo/mongo_client.py", line 336, in     __init__
    raise ConnectionFailure(str(e))
pymongo.errors.ConnectionFailure: could not connect to 127.0.0.1:27017: [Errno 111]     Connection refused

最佳答案

我对 pyserial 也有同样的问题,但就我而言,我的脚本文件的名称为 serial.py,因此当我尝试导入串行时,它无法识别我的包。我只是重命名我的文件并且工作正常。

关于python - 模块可以在控制台导入,但不能在脚本内导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16177939/

相关文章:

python - 如何在Python中快速检查和统计英语语法错误?

python - 如何在Python2.7的unittest中显示assertRaises()捕获的错误信息?

linux - Makefile:检查对目录的写入权限

linux - 使用 sed/awk 在 php 文件中的两行之间添加行

apache - 在 httpd.conf 中设置 IndexIgnore

module - Nest.js : Circular dependencies in dynamic modules

python - 用kivy按下按钮时如何更改空格?

Python - 循环 HTML 标签并使用 IF

linux - 如何使用 sed 或 python 重写文件的最后一列

css - Opencart模块CSS调整