感觉 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 的包啊??

5745 次点击
所在节点    Python
51 条回复
tankeco
2018-11-29 01:58:13 +08:00
还有很多……
pip install
apt install python-xxx
python3 setup.py install
python3 setup.py develop
pip install .

然后我从来没有分清楚过这些地址:
/usr/lib/python3.x/dist-packages
/usr/lib/python3.x/site-packages
/usr/local/lib/python3.x/site-packages
/usr/local/lib/python3.x/dist-packages
.local/lib/python3.5/site-packages
xiaket
2018-11-29 06:10:59 +08:00
我觉得是你不太懂 Linux...
FourAndHalf
2018-11-29 08:40:31 +08:00
恰恰相反
XIVN1987
2018-11-29 09:09:58 +08:00
@xiaket
确实不太懂,,所以发帖问下懂 Linux 的怎么安装 Python 包,,

现在看来,大都推荐 virtualenv,,可能这就是 Linux 下的最佳实践吧
XIVN1987
2018-11-29 09:11:02 +08:00
@FourAndHalf
能给解释下原因吗??
clino
2018-11-29 09:32:59 +08:00
其实 windows 下部署我一样用 virtualenv
Linux 下如果为了方便可以在把 bash 配置成默认加载一个常用的 env,我因为正在做 py2/3 切换,所以有两个 env,建了两个 alias 来方便切换
Hieast
2018-11-29 09:35:44 +08:00
楼上似乎露了一点,我来补充一下。
sudo 默认是会做一些环境变量的清理工作的,而 python 虚拟环境,包括 pip 都是根据一些特定环境变量来寻址的。

你用 pyenv 也好,不用也罢,以后你安装 python 包的时候把 pip 的路径手动写完整就不会有问题。系统的自带的 python 版本固定,并且需要管理员权限才能写入,一般不推荐使用。
自己额外安装一个合适的版本或者用 pyenv 管理多版本都好。

重点说三遍:pip 路径写完整
重点说三遍:pip 路径写完整
重点说三遍:pip 路径写完整
shylockhg
2018-11-29 09:39:49 +08:00
你直接用 pip install --user 就行了
zephyru
2018-11-29 09:50:24 +08:00
@XIVN1987
...你还是没搞懂..不带 sudo 的话是以当前用户权限来安装的,默认是安装到用户目录...即使没带--user...
感觉之前的讨论应该有人提过了..
julyclyde
2018-11-29 10:08:53 +08:00
apt 另说
pip 和 sudo pip 是你抗拒学习的问题,不是 pip 的问题
XIVN1987
2018-11-29 10:15:56 +08:00
@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 的操作
codehz
2018-11-29 10:19:44 +08:00
提示一下,千万不要用 sudo pip install 除非你打算以后不用发行版的包管理系统。。。
这显而易见会破坏系统环境。。。
pip install --user 用来做单用户的全局安装,如果要多用户使用,推荐方案是自己用发行版的工具打包一个。。。
lolizeppelin
2018-11-29 10:41:28 +08:00
开发人员就喜欢瞎咋折腾环境
看着就烦
rayhy
2018-11-29 10:53:14 +08:00
所以 linux 下安装 python 包确实不如 Windows 下安装清晰,楼主的说法是正确的。但是 linux 下这样设计带来了更精细的控制,可能是生产环境下使用必需的。
Cbdy
2018-11-29 10:54:56 +08:00
这方面 Python 设计不是很合理。建议用 Docker 换语言
LokiSharp
2018-11-29 10:57:44 +08:00
我觉得 Linux 比 Windows 清晰啊,怎么装都是那么几个位子
XIVN1987
2018-11-29 11:02:04 +08:00
@rayhy
终于遇到一个赞同的,,感动( ̄▽ ̄)/
XIVN1987
2018-11-29 11:03:18 +08:00
@Cbdy
不是 Python 设计的问题,,是因为 Linux 本身严重依赖 Python

要像 Windows 那样系统本身不使用 Pyhon,,就没有这些问题了
LokiSharp
2018-11-29 11:12:57 +08:00
@XIVN1987 #38 你的问题是不理解 Linux 权限机制,和 Python Pip 没关系。。。Linux 是完整的多用户系统和 Windows 这种半吊子多用户不一样的
lolizeppelin
2018-11-29 11:16:46 +08:00
和清晰没任何关系

是规范化系统管理的问题

开发喜欢瞎搞不按系统规范来做自然觉得束缚

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

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

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

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

© 2021 V2EX