软件包与`sudo python`存在,但在运行`python`时不存在

迪诺

我正在AWS上配置机器。当我在AWS公共云上(使用标准发行版的Ubuntu AMI)设置此机器时,我能够sudo pip install -r REQUIREMENTS在系统范围的python发行版中成功获取所需的所有python包(例如Flask):

[bash]$ python -c "import flask; print flask.__file__"
/usr/local/lib/python2.7/dist-packages/flask/__init__.pyc
[bash]$ python -c "import pprint, sys; pprint.pprint(sys.path)"
['',
 '/usr/local/lib/python2.7/dist-packages/setuptools-20.2.2-py2.7.egg',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages']

当我sudo pip install -r REQUIREMENTS在私有Ubuntu AMI上使用相同的软件包时(无疑已经过修改以具有“更好的安全性”),这些软件包似乎安装得很好,但是当我从命令行运行python时,我得到了一个ImportError

[bash]$ python -c "import flask; print flask.__file__"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named flask

有趣的是,使用sudo运行命令会产生我在公共AWS帐户上获得的预期结果:

[bash]$ sudo python -c "import flask; print flask.__file__"
/usr/local/lib/python2.7/dist-packages/flask/__init__.pyc

sys.path在运行时是相同的pythonsudo python并且两者似乎都/usr/local/lib/python2.7/dist-packages在文件中:

[bash]$ python -c "import pprint, sys; pprint.pprint(sys.path)"
['',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages']
[bash]$ sudo python -c "import pprint, sys; pprint.pprint(sys.path)"
['',
 '/usr/local/lib/python2.7/dist-packages/setuptools-20.2.2-py2.7.egg',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages']

这里的任何建议都将受到欢迎。我以前从未见过这样的东西,而且在弄清楚此修改过的Ubuntu AMI的不同之处(可能引起问题)时遇到了麻烦。

迪诺

事实证明该/usr/local/lib/python2.7/dist-packages目录没有a+r访问权限。结果,我们必须运行一些命令来解决问题:

# change permissions on the directories to read and execute, files to read
find /usr/local/lib/python2.7 -type d | xargs sudo chmod a+rx
find /usr/local/lib/python2.7 -type f | xargs sudo chmod a+r

这是一个非常奇怪的问题,我希望有人有一天会发现这个问题有用(或者更好的是,首先不会遇到问题)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在运行maven install时出现“软件包不存在”错误?

来自分类Dev

软件包不存在-Java

来自分类Dev

Go 软件包未以 sudo 身份运行

来自分类Dev

软件包javax.servlet.annotation不存在

来自分类Dev

Glassfish 4:碧玉-OSGI软件包不存在

来自分类Dev

软件包javax.servlet.annotation不存在

来自分类Dev

appcompat v7软件包不存在

来自分类Dev

Maven Javadoc插件-软件包不存在

来自分类Dev

Maven构建失败:软件包不存在

来自分类Dev

软件包org.languagetool不存在

来自分类Dev

软件包javax.annotation.security不存在

来自分类Dev

Maven构建失败:软件包不存在

来自分类Dev

软件包javax邮件不存在

来自分类Dev

软件包org.pdfbox.cos不存在

来自分类Dev

库导入后Java软件包不存在

来自分类Dev

软件包不存在,应使用<identifier>

来自分类Dev

软件包javax.jws不存在

来自分类Dev

twitter4j软件包不存在

来自分类Dev

如何重置使用sudo安装的Python软件包的OS:X安装?

来自分类Dev

使用sudo在虚拟环境中安装python软件包

来自分类Dev

Python软件包目录

来自分类Dev

nagiosplugin python软件包

来自分类Dev

尝试使用 sudo apt-get 安装软件包时出错

来自分类Dev

为什么在Ubuntu软件中心中不存在lp中的某些软件包?

来自分类Dev

JNA软件包已存在,但NetBeans导入仍然表示它不存在

来自分类Dev

在没有sudo特权的Linux系统上安装Python TA-lib软件包时出错

来自分类Dev

Team Foundation Server无法构建,因为不存在nuget软件包

来自分类Dev

软件包org.springframework.aop.framework不存在

来自分类Dev

样本“ mavenproject” netbeans 7.4不存在javafx软件包