网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月15日漏签0天
python吧 关注:474,609贴子:1,967,792
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 11回复贴,共1页
<<返回python吧
>0< 加载中...

virtualenv中的ImportError: No module named

  • 只看楼主
  • 收藏

  • 回复
  • 克拉夫丘克
  • 探花
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
安装了virtualenv后
pip install tornado
运行python时import tornado没问题
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tornado.httpserver
>>> import tornado.ioloop
但是在
~$ sudo python hello.py
的时候出错
Traceback (most recent call last):
File "hello.py", line 5, in <module>
import tornado.httpserver
ImportError: No module named tornado.httpserver
据说是sudo时不按照虚拟路径?怎么解决?


  • 贴吧用户_0QP2EKb
  • 状元
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


2025-06-15 16:47:16
广告
  • 善良的林果皞
  • 贡士
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
步骤一, 先找出你的成功路径例子:
[ack0hole@localhost tmp]$ py278 -sE #这是我的例子,你的是 Python 3.4.0 交互模式
Python 2.7.8 (default, Sep 2 2014, 23:14:58)
[GCC 4.8.3 20140624 (Red Hat 4.8.3-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tornado.httpserver
>>> tornado.httpserver.__file__
*/usr/lib/python2.7/site-packages/tornado/httpserver.pyc*
>>>
步骤二, 然后在你的 hello.py 输入代码:
[ack0hole@localhost tmp]$ cat hello.py
import sys;
print(sys.path)
import tornado.httpserver
print locals()
[ack0hole@localhost tmp]$ python hello.py #这是我的例子,你的是 sudo python hello.py
[*/tmp*, */usr/local/lib/python27.zip*, */usr/local/lib/python2.7*, */usr/local/lib/python2.7/plat-linux2*, */usr/local/lib/python2.7/lib-tk*, */usr/local/lib/python2.7/lib-old*, */usr/local/lib/python2.7/lib-dynload*, */home/ack0hole/.local/lib/python2.7/site-packages*, */usr/local/lib/python2.7/site-packages*]
Traceback (most recent call last):
File "hello.py", line 3, in <module>
import tornado.httpserver
ImportError: No module named tornado.httpserver
[ack0hole@localhost tmp]$
上面的步骤一,*/usr/lib/python2.7/site-packages/tornado/httpserver.pyc* 表示 httpserver.pyc 是坐落在 */usr/lib/python2.7/site-packages/tornado/* 目录里头, 可是步骤二 的 sys.path 却不包括 */usr/lib/python2.7/site-packages/* 那个目录。
所以,
1. 步骤二的 sys.path 输出 site-packages 的例子是 /usr/local/lib/python2.7/site-packages 之类的。
2. 那我们的目标就是在 /usr/local/lib/python2.7/site-packages 创建新的文件叫 tornado.pth 。 其中 .pth 后缀是必须的。
3. 创建的文件内容是步骤一所获知的 tornado 绝对路径目录: /usr/lib/python2.7/site-packages/
创建新的文件示范:
[ack0hole@localhost tmp]$ sudo sh -c "echo */usr/lib/python2.7/site-packages/* > /usr/local/lib/python2.7/site-packages/tornado.pth" #请把星号换成单引号
再一次运行 hello.py:
[ack0hole@localhost tmp]$ python hello.py #这是我的例子,你的是 sudo python hello.py
[*/tmp*, */usr/local/lib/python27.zip*, */usr/local/lib/python2.7*, */usr/local/lib/python2.7/plat-linux2*, */usr/local/lib/python2.7/lib-tk*, */usr/local/lib/python2.7/lib-old*, */usr/local/lib/python2.7/lib-dynload*, */home/ack0hole/.local/lib/python2.7/site-packages*, */usr/local/lib/python2.7/site-packages*, */usr/lib/python2.7/site-packages*]
{*__builtins__*: <module *__builtin__* (built-in)>, *__file__*: *hello.py*, *__package__*: None, *sys*: <module *sys* (built-in)>, *tornado*: <module *tornado* from */usr/lib/python2.7/site-packages/tornado/__init__.pyc*>, *__name__*: *__main__*, *__doc__*: None}
[ack0hole@localhost tmp]$
如上所示, 成功 import */usr/lib/python2.7/site-packages/tornado/__init__.pyc*。
bonus:
如果你不想整个 /usr/lib/python2.7/site-packages 被加入 path, 可以在 /usr/lib/python2.7/site-packages/ 里头, 把现有的 tornado 目录放在新建的 tornado 目录。
[ack0hole@localhost site-packages]$ cd /tmp
[ack0hole@localhost tmp]$ cd /usr/lib/python2.7/site-packages/
[ack0hole@localhost site-packages]$ sudo mkdir tornado2 #先新建暂时的目录, 叫 tornado2
[ack0hole@localhost site-packages]$ sudo mv tornado tornado2/ #把现有的 tornado 目录放在新建的 tornado2 目录。
[ack0hole@localhost site-packages]$ sudo mv tornado2 tornado #把 tornado2 目录改名为 tornado 目录
[ack0hole@localhost site-packages]$ sudo sh -c "echo */usr/lib/python2.7/site-packages/tornado* > /usr/local/lib/python2.7/site-packages/tornado.pth" #然后不再加入整个 site-packages, 而是 tornado 一个。 #请把星号换成单引号
[ack0hole@localhost site-packages]$ cat /usr/local/lib/python2.7/site-packages/tornado.pth
/usr/lib/python2.7/site-packages/tornado
[ack0hole@localhost site-packages]$ cd /tmp
[ack0hole@localhost tmp]$ python hello.py #仍然成功
[*/tmp*, */usr/local/lib/python27.zip*, */usr/local/lib/python2.7*, */usr/local/lib/python2.7/plat-linux2*, */usr/local/lib/python2.7/lib-tk*, */usr/local/lib/python2.7/lib-old*, */usr/local/lib/python2.7/lib-dynload*, */home/ack0hole/.local/lib/python2.7/site-packages*, */usr/local/lib/python2.7/site-packages*, */usr/lib/python2.7/site-packages/tornado*]
{*__builtins__*: <module *__builtin__* (built-in)>, *__file__*: *hello.py*, *__package__*: None, *sys*: <module *sys* (built-in)>, *tornado*: <module *tornado* from */usr/lib/python2.7/site-packages/tornado/tornado/__init__.pyc*>, *__name__*: *__main__*, *__doc__*: None}
[ack0hole@localhost tmp]$
#bonus2:
上面的例子都是 tornado 版本 2。 如果是新版本 4, tornado 目录是在 .egg 目录里头的,这样就省却 "把现有的 tornado 目录放在新建的 tornado 目录" 的步骤。
[ack0hole@localhost tornado]$ py278 -c "import tornado"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named tornado
[ack0hole@localhost tornado]$ echo /usr/lib/python2.7/site-packages/tornado-4.0.2-py2.7-linux-i686.egg/ > /home/ack0hole/.local/lib/python2.7/site-packages/tornado4.0.2.pth
[ack0hole@localhost tornado]$ cat /home/ack0hole/.local/lib/python2.7/site-packages/tornado4.0.2.pth
/usr/lib/python2.7/site-packages/tornado-4.0.2-py2.7-linux-i686.egg/
[ack0hole@localhost tornado]$ py278 -c "import tornado"
[ack0hole@localhost tornado]$


  • TPOF314
  • 探花
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
可能没有启动虚拟机。运行前需要先写source 虚拟机路径/bin/active 来启动虚拟机


  • 尤文vs图斯
  • 进士
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 贴吧用户_0QP2EKb
  • 状元
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 11回复贴,共1页
<<返回python吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示