感觉 Linux 下安装 Python 包不如 windows 下清晰

2018-11-28 22:14:22 +08:00
 XIVN1987

windows 下,不管什么包,都是 pip install,而且都是安装到 site-packages 下,, Linux 下,pip install、sudo pip install、sudo apt install 三种方式,而且安装目录还不一样,,感觉不如 windows 下清晰

如果都用 pip install 装的话,有些软件执行需要管理员权限又找不到已安装的包 如果都用 sudo pip install 装的话,有时候又可能会忘记用 sudo 了,还得先卸载了再用 sudo pip 重新装一遍,,

请问各位 Linux 大神怎么安装 Python 的包啊??

5727 次点击
所在节点    Python
51 条回复
clino
2018-11-28 22:16:29 +08:00
我一般创建一个 virtualenv,在里面 pip install 这样比较干净
xiaoheijw
2018-11-28 22:16:31 +08:00
pyenv
hhhsuan
2018-11-28 22:17:50 +08:00
pipenv
XIVN1987
2018-11-28 22:21:46 +08:00
@clino
全装虚拟环境里??

好吧,看来虚拟环境是 Linux 下使用 Python 的最佳实践
greatx
2018-11-28 22:23:18 +08:00
保持系统环境干净,平时用到的放到虚拟环境里,不用可以直接删了。
ericls
2018-11-28 22:24:19 +08:00
@XIVN1987 所有项目的东西都装 venv 就跟 npm 似的
toptyloo
2018-11-28 22:31:15 +08:00
pip install xxx --user
toptyloo
2018-11-28 22:35:06 +08:00
上面全用虚拟环境的,说不定 LZ 不是为了开发用,只是为了安装一个工具呢?
如果--user 不行的话,就去尝试一下发行版打的包,不推荐使用 sudo
PS 感觉 LZ 对 Linux 的一些权限之类的东西了解得不够多,建议去看看.
feather12315
2018-11-28 22:35:23 +08:00
不都是 sudo apt install 么?
pip 装,得手动管理呀,交给发行版管理多好
XIVN1987
2018-11-28 22:47:33 +08:00
@feather12315
不是所有 python package 都能 apt 安装吧??有些 python 包可能没做 apt 的安装包
lance6716
2018-11-28 22:49:56 +08:00
anaconda
matsuz
2018-11-28 22:51:02 +08:00
pip install 和 sudo pip install 是同一个命令,区别在于加了 sudo 运行拥有 root 权限,它们和 sudo apt install 都是直接将包安装到系统的 site-packages 文件夹中。

sudo apt install 是安装发行版打包好的 python 包,这种包通常版本都非常旧。
pip install 是直接从 pypi 源中下载安装,这个都是最新版,而且 pip 可以控制安装的版本。pip install 由于直接安装到系统目录里面,所以一定要有 root 权限。

还有个命令是 pip install --user,这个是安装到当前用户的 home 目录中的 site-packages 中,执行这个命令不需要 root 权限。

上面的流程都非常清晰,没有什么不好理解的地方。

顺便讲一下 sudo,这个命令是可以让后面跟的命令以 root 权限执行的程序。
不过通常来讲,还是推荐新建一个虚拟环境来安装包。
XIVN1987
2018-11-28 22:51:33 +08:00
@toptyloo

确实是,比如我用 esptool.py 这个工具,需要安装 esptool 包,,如果装到虚拟环境里,,还得先激活一下虚拟环境才能使用 esptool.py ,,麻烦了一步,,

不知道在.bashrc 中加条语句自动激活虚拟环境会不会影响系统运行

另外,,你上面提到“--user ”,,这下选项更多了,,更不知道如何是好了>﹏<

我去 google 查查去
XIVN1987
2018-11-28 23:00:29 +08:00
@matsuz

讲的很清晰,,非常感谢

那应该是我记错了,,我只记得有一种安装方式会把 package 给安装到用户目录下的.local 目录下,,但没想起来命令是 pip install --user,,所以就认为不带 sudo 的 pip 会将包安装到用户目录去

所以,pip install 要么带 sudo、要么带--user,,
Trim21
2018-11-28 23:10:45 +08:00
开一个 venv 全都在 venv 里面用 pip 装
xpresslink
2018-11-28 23:11:26 +08:00
楼主此言差矣,在 LINUX 下安装包和部署都比 Windows 要简单方便。
通常都是用 virtualenv,
在开发项目时用到那个第三方依赖包就直接在 requirmens.txt 里加一行。
然后在目标环境里直接
pip install -r requirements.txt 就可以了。
likuku
2018-11-28 23:13:34 +08:00
@toptyloo [上面全用虚拟环境的,说不定 LZ 不是为了开发用,只是为了安装一个工具呢?]

不少 linux 发行版本身很依赖系统自带的 python,可能它版本不是你想用的,
那最好还是起个虚拟版本 /环境 来装,君不见 v 站三天两头有人哀嚎 把系统自带 python 搞坏而让系统崩坏的么?

用惯 pyenv/pipenv/virtualenv 之后,的确我就算装个什么工具,也是单独给它个目录另起独立虚拟环境。

前后也就多花十秒,多耗百 M 硬盘空间什么,然而不会扰乱环境 /扰乱其它项目,这点代价很轻微了。
XIVN1987
2018-11-28 23:23:38 +08:00
@matsuz

我刚才试了下,

pip install markdown

>>> import markdown
>>> markdown
<module 'markdown' from '/home/wmx/.local/lib/python2.7/site-packages/markdown/__init__.pyc'>

我并没有用--user,,包还是被安装到了用户目录下,跟你说的不一样啊

我用的是 WSL ( Ubuntu on Windows ),,这个应该不影响 pip 的安装位置吧
feather12315
2018-11-28 23:31:05 +08:00
@XIVN1987 #10,一般都有,没有的就用 virtualenv 了,尽量避免 pip
ysc3839
2018-11-28 23:37:20 +08:00
如果 Python 安装在 Program Files 文件夹里,pip install 也是需要管理员权限的。
apt install 应该是针对那些不全是 Python 代码写的,需要编译的项目,软件源提供了编译好的版本。如果通过 pip install 安装的话是会下载源代码然后编译的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/512512

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX