Ubuntu系统下Python基础库的安装以及pip和pip3常见报错解答

安装python依赖库

Python基础库安装

注意Python2 的话用pip安装,Python3pip3安装(总之要知道安装在哪里,有的系统将python软连接到Python3上了)

pip install scipy \
            pandas \
            numpy \
            scikit-image \
            scikit-learn \
            matplotlib \
            pandas \
            tqdm \
            Pillow

Anaconda虚拟环境中首先激活虚拟环境,然后用conda安装依赖包:

conda install jupyter notebook \
              scipy \
              pandas \
              numpy \
              scikit-image \
              cikit-learn \
              matplotlib \
              pandas \
              tqdm \
              Pillow

DGX-ONE服务器下安装:

apt-get install scipy
apt-get install numpy
apt-get install python-skimage(install skimage)
(pspnet): install matio

Python项目requirements文件的生成和使用

我们做开发时为何需要对依赖库进行管理?当依赖类库过多时,如何管理类库的版本?
Python提供通过requirements.txt文件来进行项目中依赖的三方库进行整体安装导入。

首先看一下requirements.txt的格式:

requests==1.2.0
Flask==0.10.1

Python安装依赖库使用pip可以很方便的安装,如果我们需要迁移一个项目,那我们就需要导出项目中依赖的所有三方类库的版本、名称等信息。

接下来就看Python项目如何根据requirements.txt文件来安装三方类库

1. 生成requirements.txt

  • 方法一:pip freeze

使用pip freeze生成requirements.txt

pip freeze > requirements.txt

pip freeze命令输出的格式和requirements.txt文件内容格式完全一样,因此我们可以将pip freeze的内容输出到文件requirements.txt中。在其他机器上可以根据导出的requirements.txt进行包安装。

注意pip freeze输出的是本地环境中所有三方包信息,但是会比pip list少几个包,因为pip,wheel,setuptools等包,是自带的而无法(un)install的,如果要显示所有包可以加上参数-all,即pip freeze -all

  • 方法二:pipreqs

使用pipreqs生成requirements.txt

首先先安装pipreqs:

pip install pipreqs

使用pipreqs生成requirements.txt:

pipreqs ./

注意:pipreqs生成指定目录下的依赖类库

上面两个方法的区别?
使用pip freeze保存的是当前Python环境所有的类库,如果你没有用virtualenv来对Python环境做虚拟化的话,类库就会很杂很多,在对项目进行迁移的时候我们只需关注项目中使用的类库,没有必要导出所有安装过的类库,因此我们一般迁移项目不会使用pipreqspip freeze更加适合迁移整个python环境下安装过的类库时使用。(不知道virtualenv是什么或者不会使用它的可以查看:《构建Python多个虚拟环境来进行不同版本开发之神器-virtualenv》)。

使用pipreqs它会根据当前目录下的项目的依赖来导出三方类库,因此常用与项目的迁移中。

这就是pip freeze、pipreqs的区别,前者是导出Python环境下所有安装的类库,后者导出项目中使用的类库。

2. 根据requirements.txt安装依赖库

如果要安装requirements.txt中的类库内容,那么你可以执行:

pip install -r requirements.txt

pip和pip3常见报错

问题描述 1

$ pip3 --version
Traceback (most recent call last):
  File "/usr/bin/pip3", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2708, in <module>
    working_set.require(__requires__)
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 686, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 584, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pip==1.5.6

解决方法

sudo python3 get-pip.py
sudo python3 ez_setup.py

其中get-pip.pyez_setup.py文件在src/fix_pip文件夹中。

问题描述 2

Error checking for conflicts.
Traceback (most recent call last):
  File "/home/andy/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2584, in version
    return self._version
  File "/home/andy/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2691, in __getattr__
    raise AttributeError(attr)
AttributeError: _version
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/andy/.local/lib/python3.5/site-packages/pip/_internal/commands/install.py", line 503, in _warn_about_conflicts
    package_set, _dep_info = check_install_conflicts(to_install)
  File "/home/andy/.local/lib/python3.5/site-packages/pip/_internal/operations/check.py", line 108, in check_install_conflicts
    package_set, _ = create_package_set_from_installed()
  File "/home/andy/.local/lib/python3.5/site-packages/pip/_internal/operations/check.py", line 47, in create_package_set_from_installed
    package_set[name] = PackageDetails(dist.version, dist.requires())
  File "/home/andy/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2589, in version
    raise ValueError(tmpl % self.PKG_INFO, self)
ValueError: ("Missing 'Version:' header and/or METADATA file", Unknown [unknown version] (/home/andy/.local/lib/python3.5/site-packages))

在这里插入图片描述

解决方法
运行以下代码,查看site-packages下的文件夹, 删除以 - 开头的文件夹:

python3 -c "import site; print(site.getsitepackages())"

到报错文件夹下(这里是/home/andy/.local/lib/python3.5/site-packages)删除 - 开头的文件夹,然后重新执行 pip3 list .
我这里是 -pencv_python-3.4.3.18.dist-info

rm -rf  ./-pencv_python-3.4.3.18.dist-info

然后 pip3 list 正常了.


猜你喜欢

转载自blog.csdn.net/m0_61531676/article/details/129652654