繁体   English   中英

文件的位置和用法:apt-get install python- <pkg> 与pip3安装 <pkg>

[英]Location of files and usage: apt-get install python-<pkg> vs. pip3 install <pkg>

我发现sudo apt-get install python-<pkg>sudo pip3 install <pkg>安装文件在不同的位置。

是否可以通过两个选项中的任何一个对用户透明的方式呈现安装?

在我的特定情况下,不是,请参见下文。 apt-get安装的二进制文件已被pip3删除,因此其用法有所不同。

副产品问题是:

按照以下顺序:1)apt-get install,2)pip --upgrade,第二步升级版本并更改文件位置。 但是apt-get仍然认为它在原始位置具有原始版本。 如何解决?

我打算安装virtualenv 我刚刚做了以下工作:

  1. 安装python-virtualenv

     $ sudo apt-get install python-virtualenv Reading package lists... Done ... Setting up virtualenv (15.0.1+ds-3ubuntu1) ... 
  2. 检查pip3读取virtualenv

     $ sudo pip3 install virtualenv The directory '/home/santiago/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. The directory '/home/santiago/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. Requirement already satisfied: virtualenv in /usr/lib/python3/dist-packages 
  3. 查找已安装的文件。 这些位于/usr/lib/python3/dist-packagespip3理解这一点。

     $ ll /usr/lib/python3/dist-packages/virtualenv* -rw-r--r-- 1 root root 100655 Nov 30 08:29 /usr/lib/python3/dist-packages/virtualenv.py /usr/lib/python3/dist-packages/virtualenv-15.0.1.egg-info: total 36 drwxr-xr-x 2 root root 4096 Apr 22 20:48 ./ drwxr-xr-x 146 root root 12288 Apr 22 20:48 ../ -rw-r--r-- 1 root root 1 Nov 30 08:29 dependency_links.txt -rw-r--r-- 1 root root 48 Nov 30 08:29 entry_points.txt -rw-r--r-- 1 root root 1 Nov 30 08:29 not-zip-safe -rw-r--r-- 1 root root 3409 Nov 30 08:29 PKG-INFO -rw-r--r-- 1 root root 11 Nov 30 08:29 top_level.txt 
  4. 查找版本

     $ virtualenv --version 15.0.1 
  5. 使用virtualenv

     $ virtualenv my_project Running virtualenv with interpreter /usr/bin/python2 New python executable in /home/santiago/my_project/bin/python2 Also creating executable in /home/santiago/my_project/bin/python Installing setuptools, pkg_resources, pip, wheel...done. 

所以这很好。 现在我要做的是:

  1. 升级到最新版本。 这必须使用pip完成,因为apt-get安装了其最新可用版本。

     $ sudo pip3 install --upgrade virtualenv [sudo] password for santiago: The directory '/home/santiago/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. The directory '/home/santiago/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. Collecting virtualenv Downloading virtualenv-15.1.0-py2.py3-none-any.whl (1.8MB) 100% |████████████████████████████████| 1.8MB 781kB/s Installing collected packages: virtualenv Found existing installation: virtualenv 15.0.1 Uninstalling virtualenv-15.0.1: Successfully uninstalled virtualenv-15.0.1 Successfully installed virtualenv-15.1.0 
  2. 尝试使用virtualenv

     $ virtualenv -p python3 my_project bash: /usr/bin/virtualenv: No such file or directory 
  3. 查找已安装的文件。 apt-get安装的文件不见了。

     $ ll /usr/lib/python3/dist-packages/virtualenv* ls: cannot access '/usr/lib/python3/dist-packages/virtualenv*': No such file or directory $ ll /usr/bin/virtualenv ll /usr/bin/virtualenv 
  4. 尝试恢复apt-get提供的内容。

     $ sudo apt-get install python-virtualenv Reading package lists... Done Building dependency tree Reading state information... Done python-virtualenv is already the newest version (15.0.1+ds-3ubuntu1). The following packages were automatically installed and are no longer required: linux-headers-4.4.0-64 linux-headers-4.4.0-64-generic linux-image-4.4.0-64-generic linux-image-extra-4.4.0-64-generic Use 'sudo apt autoremove' to remove them. 0 upgraded, 0 newly installed, 0 to remove and 174 not upgraded. 

通常,用pip升级系统软件包管理器(在本例中为apt )安装的软件包不是一个好主意,因为它们将不再由系统管理。

pip将安装到/usr/local 在外壳程序中找不到命令的原因是由于命令哈希 您可以运行hash -r然后可以再次使用virtualenv ... (从/usr/local/bin/virtualenv

apt认为仍然安装了virtualenv的原因是因为尚未使用apt 卸载它。 通过pip升级不会更新dpkg元数据。 您可以使用grep进行验证:

# Note: I'm using xenial, if you're on something ealier the package will
# just be called `python-virtualenv` or `python3-virtualenv`
$ grep -C1 '^Package: virtualenv$' /var/lib/dpkg/status

Package: virtualenv
Status: install ok installed
$ grep -C1 '^Package: python3-virtualenv$' /var/lib/dpkg/status

Package: python3-virtualenv
Status: install ok installed

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM