gpt4 book ai didi

Python 找不到它的包

转载 作者:行者123 更新时间:2023-11-28 19:13:15 26 4
gpt4 key购买 nike

我自己写了一个方便的 bash 脚本,它解决了使用自己编译的 virtualenv 和 python 创建 virtualenv 的任务。它旨在创建一个大部分自包含的 virtualenv,如果需要,可能只在系统级别安装 native 库,但在 virtualenv 中安装所有 python 包和 virtualenv 和 pip 以及类似的东西。

可以找到脚本here .

我按如下方式调用脚本:

self_contained_venv.sh \
-n udacity_model_building_and_validation \
-p https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tar.xz \
-v https://pypi.python.org/packages/c8/82/7c1eb879dea5725fae239070b48187de74a8eb06b63d9087cd0a60436353/virtualenv-15.0.1.tar.gz#md5=28d76a0d9cbd5dc42046dd14e76a6ecc \
-d pandas scikit-learn seaborn

鉴于系统上安装了编译 python 和 virtualenv 所需的包,该脚本创建了一个不错的 virtualenv。但是,当我尝试从 virtualenv 中访问任何已安装的模块/包时,python 无法找到它们。为了演示这一 pip ,我将在此处放置一些命令和代码的输出:

当然,首先我必须激活 virtualenv:

. bin/activate

输出:无,工作没有问题。

然后我打印 python 路径 python 知道:

import sys
for i in sys.path:
print(i)

输出:

/home/xiaolong/development/Python/udacity_model_building_and_validation/lib/python34.zip
/home/xiaolong/development/Python/udacity_model_building_and_validation/lib/python3.4
/home/xiaolong/development/Python/udacity_model_building_and_validation/lib/python3.4/plat-linux
/home/xiaolong/development/Python/udacity_model_building_and_validation/lib/python3.4/lib-dynload
/home/xiaolong/development/Python/udacity_model_building_and_validation/localpython/lib/python3.4
/home/xiaolong/development/Python/udacity_model_building_and_validation/localpython/lib/python3.4/plat-linux
/home/xiaolong/development/Python/udacity_model_building_and_validation/lib/python3.4/site-packages

到目前为止一切顺利。然后我尝试导入我在使用 bash 脚本时安装的模块/包:pandas:

python

(IDLE 正在运行)

import pandas as pd

输出:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'pandas'

另一个尝试:

import numpy as np

输出:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'numpy'

嗯?所以没有一个包可用?让我们再次检查 pip:

which pip

输出:

alias pip='localpython/bin/pip3.4'
./localpython/bin/pip3.4

好的,所以它正在使用我的本地 pip。

检查包:

pip list

输出:

numpy (1.11.0)
pandas (0.18.1)
pip (8.1.2)
psutil (4.1.0)
Python-contrib-nbextensions (alpha)
python-dateutil (2.5.3)
pytz (2016.4)
PyYAML (3.11)
setuptools (18.2)
six (1.10.0)
virtualenv (15.0.1)

嗯,包在那里,为什么 python 找不到它们?让我们看看这些包的位置,只需尝试删除一个:

pip uninstall pandas

输出(缩短,因为它填满了很多页):

Uninstalling pandas-0.18.1:
/home/xiaolong/development/Python/udacity_model_building_and_validation/localpython/lib/python3.4/site-packages/pandas-0.18.1-py3.4.egg-info
/home/xiaolong/development/Python/udacity_model_building_and_validation/localpython/lib/python3.4/site-packages/pandas/__init__.py
/home/xiaolong/development/Python/udacity_model_building_and_validation/localpython/lib/python3.4/site-packages/pandas/__pycache__/__init__.cpython-34.pyc
/home/xiaolong/development/Python/udacity_model_building_and_validation/localpython/lib/python3.4/site-packages/pandas/__pycache__/_version.cpython-34.pyc
/home/xiaolong/development/Python/udacity_model_building_and_validation/localpython/lib/python3.4/site-packages/pandas/__pycache__/info.cpython-34.pyc

啊哈,所以包路径中。

另一种尝试找出 python 是否在正确的位置:

>>> from distutils.sysconfig import get_python_lib
>>> print(get_python_lib())
/home/xiaolong/development/Python/udacity_model_building_and_validation/lib/python3.4/site-packages

因此,如果我理解正确的话,这表明它看起来不在正确的位置。

注意:

该脚本执行以下操作,这些操作可能并不明显:

  • 编译带有前缀的python(本地python)
  • 为本地python编译virtualenv
  • 它将pip别名为安装的python版本的本地pip
  • 它将 virtualenv 别名为本地安装的
  • 如果指定,它会从 pypi 安装包
  • 如果有可用的更新版本,它会更新本地 pip

我是一个初学者,还在写 bash 脚本,所以我认为脚本的结构和逻辑相当容易理解。它还在终端中打印有关其操作成功的信息。


进一步说明:

  • 我没有使用 susudo 来运行脚本。
  • 我的操作系统是 Fedora 22,尽管我认为在这种情况下任何主要发行版都可以以相同的方式工作。
  • 最近更新了操作系统。

问题:那么为什么 Python 找不到它们/它自己的包? (我需要改变什么?)

最佳答案

你能尝试在你的脚本中和在你的系统中手动比较 pyhton 和 pip 的路径吗:哪个 python哪个 pip?之后检查 pip freeze | grep pandas 它应该返回你的包...如果没有,你需要将这个包添加到你的 python 的 site-packages 文件夹中。

关于Python 找不到它的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37217172/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com