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 的包啊??
1
clino 2018-11-28 22:16:29 +08:00
我一般创建一个 virtualenv,在里面 pip install 这样比较干净
|
2
xiaoheijw 2018-11-28 22:16:31 +08:00
pyenv
|
3
hhhsuan 2018-11-28 22:17:50 +08:00 via Android
pipenv
|
5
greatx 2018-11-28 22:23:18 +08:00
保持系统环境干净,平时用到的放到虚拟环境里,不用可以直接删了。
|
7
toptyloo 2018-11-28 22:31:15 +08:00 1
pip install xxx --user
|
8
toptyloo 2018-11-28 22:35:06 +08:00
上面全用虚拟环境的,说不定 LZ 不是为了开发用,只是为了安装一个工具呢?
如果--user 不行的话,就去尝试一下发行版打的包,不推荐使用 sudo PS 感觉 LZ 对 Linux 的一些权限之类的东西了解得不够多,建议去看看. |
9
feather12315 2018-11-28 22:35:23 +08:00 via Android 1
不都是 sudo apt install 么?
pip 装,得手动管理呀,交给发行版管理多好 |
10
XIVN1987 OP @feather12315
不是所有 python package 都能 apt 安装吧??有些 python 包可能没做 apt 的安装包 |
11
lance6716 2018-11-28 22:49:56 +08:00 via Android
anaconda
|
12
matsuz 2018-11-28 22:51:02 +08:00 11
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 权限执行的程序。 不过通常来讲,还是推荐新建一个虚拟环境来安装包。 |
13
XIVN1987 OP @toptyloo
确实是,比如我用 esptool.py 这个工具,需要安装 esptool 包,,如果装到虚拟环境里,,还得先激活一下虚拟环境才能使用 esptool.py ,,麻烦了一步,, 不知道在.bashrc 中加条语句自动激活虚拟环境会不会影响系统运行 另外,,你上面提到“--user ”,,这下选项更多了,,更不知道如何是好了>﹏< 我去 google 查查去 |
14
XIVN1987 OP @matsuz
讲的很清晰,,非常感谢 那应该是我记错了,,我只记得有一种安装方式会把 package 给安装到用户目录下的.local 目录下,,但没想起来命令是 pip install --user,,所以就认为不带 sudo 的 pip 会将包安装到用户目录去 所以,pip install 要么带 sudo、要么带--user,, |
15
Trim21 2018-11-28 23:10:45 +08:00
开一个 venv 全都在 venv 里面用 pip 装
|
16
xpresslink 2018-11-28 23:11:26 +08:00
楼主此言差矣,在 LINUX 下安装包和部署都比 Windows 要简单方便。
通常都是用 virtualenv, 在开发项目时用到那个第三方依赖包就直接在 requirmens.txt 里加一行。 然后在目标环境里直接 pip install -r requirements.txt 就可以了。 |
17
likuku 2018-11-28 23:13:34 +08:00
@toptyloo [上面全用虚拟环境的,说不定 LZ 不是为了开发用,只是为了安装一个工具呢?]
不少 linux 发行版本身很依赖系统自带的 python,可能它版本不是你想用的, 那最好还是起个虚拟版本 /环境 来装,君不见 v 站三天两头有人哀嚎 把系统自带 python 搞坏而让系统崩坏的么? 用惯 pyenv/pipenv/virtualenv 之后,的确我就算装个什么工具,也是单独给它个目录另起独立虚拟环境。 前后也就多花十秒,多耗百 M 硬盘空间什么,然而不会扰乱环境 /扰乱其它项目,这点代价很轻微了。 |
18
XIVN1987 OP @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 的安装位置吧 |
19
feather12315 2018-11-28 23:31:05 +08:00 via Android
@XIVN1987 #10,一般都有,没有的就用 virtualenv 了,尽量避免 pip
|
20
ysc3839 2018-11-28 23:37:20 +08:00 via Android
如果 Python 安装在 Program Files 文件夹里,pip install 也是需要管理员权限的。
apt install 应该是针对那些不全是 Python 代码写的,需要编译的项目,软件源提供了编译好的版本。如果通过 pip install 安装的话是会下载源代码然后编译的。 |
21
tankeco 2018-11-29 01:58:13 +08:00
|
22
xiaket 2018-11-29 06:10:59 +08:00
我觉得是你不太懂 Linux...
|
23
FourAndHalf 2018-11-29 08:40:31 +08:00
恰恰相反
|
24
XIVN1987 OP |
25
XIVN1987 OP @FourAndHalf
能给解释下原因吗?? |
26
clino 2018-11-29 09:32:59 +08:00
其实 windows 下部署我一样用 virtualenv
Linux 下如果为了方便可以在把 bash 配置成默认加载一个常用的 env,我因为正在做 py2/3 切换,所以有两个 env,建了两个 alias 来方便切换 |
27
Hieast 2018-11-29 09:35:44 +08:00 via Android
楼上似乎露了一点,我来补充一下。
sudo 默认是会做一些环境变量的清理工作的,而 python 虚拟环境,包括 pip 都是根据一些特定环境变量来寻址的。 你用 pyenv 也好,不用也罢,以后你安装 python 包的时候把 pip 的路径手动写完整就不会有问题。系统的自带的 python 版本固定,并且需要管理员权限才能写入,一般不推荐使用。 自己额外安装一个合适的版本或者用 pyenv 管理多版本都好。 重点说三遍:pip 路径写完整 重点说三遍:pip 路径写完整 重点说三遍:pip 路径写完整 |
28
shylockhg 2018-11-29 09:39:49 +08:00
你直接用 pip install --user 就行了
|
29
zephyru 2018-11-29 09:50:24 +08:00
|
30
julyclyde 2018-11-29 10:08:53 +08:00
apt 另说
pip 和 sudo pip 是你抗拒学习的问题,不是 pip 的问题 |
31
XIVN1987 OP @zephyru
刚刚逐步实际操作了一遍,,简略过程如下: ``` ubuntu@VM-0-9-ubuntu:~$ pip3 --version pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5) ubuntu@VM-0-9-ubuntu:~$ pip3 install markdown Successfully installed markdown-3.0.1 ubuntu@VM-0-9-ubuntu:~$ pip3 show markdown Location: /home/ubuntu/.local/lib/python3.5/site-packages pip3 uninstall markdown ubuntu@VM-0-9-ubuntu:~$ sudo pip3 install --upgrade pip ubuntu@VM-0-9-ubuntu:~$ pip3 --version pip 18.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5) ubuntu@VM-0-9-ubuntu:~$ pip3 install markdown Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/usr/local/lib/python3.5/dist-packages/Markdown-3.0.1.dist-info' Consider using the `--user` option or check the permissions. ``` 你看,“ pip install markdown ”在不同的 pip 版本中执行是不一样的,,你说的那种情况是旧版 pip 的操作 |
32
codehz 2018-11-29 10:19:44 +08:00
提示一下,千万不要用 sudo pip install 除非你打算以后不用发行版的包管理系统。。。
这显而易见会破坏系统环境。。。 pip install --user 用来做单用户的全局安装,如果要多用户使用,推荐方案是自己用发行版的工具打包一个。。。 |
33
lolizeppelin 2018-11-29 10:41:28 +08:00
开发人员就喜欢瞎咋折腾环境
看着就烦 |
34
rayhy 2018-11-29 10:53:14 +08:00
所以 linux 下安装 python 包确实不如 Windows 下安装清晰,楼主的说法是正确的。但是 linux 下这样设计带来了更精细的控制,可能是生产环境下使用必需的。
|
35
Cbdy 2018-11-29 10:54:56 +08:00
这方面 Python 设计不是很合理。建议用 Docker 换语言
|
36
LokiSharp 2018-11-29 10:57:44 +08:00
我觉得 Linux 比 Windows 清晰啊,怎么装都是那么几个位子
|
38
XIVN1987 OP |
39
LokiSharp 2018-11-29 11:12:57 +08:00
@XIVN1987 #38 你的问题是不理解 Linux 权限机制,和 Python Pip 没关系。。。Linux 是完整的多用户系统和 Windows 这种半吊子多用户不一样的
|
40
lolizeppelin 2018-11-29 11:16:46 +08:00
和清晰没任何关系
是规范化系统管理的问题 开发喜欢瞎搞不按系统规范来做自然觉得束缚 |
41
xcai 2018-11-29 11:24:14 +08:00 via Android
其实你所说的无非是更熟悉 Linux 还是更熟悉 Windows,而你属于后者
|
42
laike9m 2018-11-29 12:58:50 +08:00 via Android
pyenv 一把梭就完事了
|
43
laike9m 2018-11-29 12:59:25 +08:00 via Android
哦,最好配合 pipsi 使用,安装一些日常要用的命令行工具
|
44
wizardoz 2018-11-29 13:06:34 +08:00
每个项目一个 virtualenv 是所有平台的最佳实践,只是 windows 下可能 virtualenv 有时候会装不上有些包。
|
45
Linxing 2018-11-29 13:40:08 +08:00
微笑脸
|
47
tatelucky 2018-11-29 14:55:27 +08:00
微微一笑,把 python 和 linux 并为一谈,,,,,,简单说吧,linux 是你一辈子都学不完的东西
|
48
XIVN1987 OP |
49
XIVN1987 OP @tatelucky
只是因为 linux 软件会使用 python,,导致不敢随意升级 linux 下 python 的包,,windows 下没有这个问题,, windows 本身不带 python,,python 都是自己安装的,,所以 windows 下 python 的包随意怎么升级也不会影响系统的运行 |
50
reself 2018-11-29 15:05:06 +08:00
老是在这些细枝末节上钻,工作做完了吗?
|
51
sazima 2018-12-02 18:42:33 +08:00
这个没有什么可以比较的
|