【python】pip install与python -m pip install

安装 Cython: pip install cython 后,安装在什么位置?

使用pip安装Cython后,它会被安装到Python的site-packages目录中。
具体的安装位置取决于你使用的Python版本和操作系统。
例如:
- 在Linux下使用Python 3.6:
会安装到/usr/local/lib/python3.6/site-packages
- 在Windows下使用Python 3.7:
会安装到C:\Users\xxx\AppData\Local\Programs\Python\Python37\Lib\site-packages
- 在MacOS下使用Python 3.8:
会安装到/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages
你可以通过以下方法找到你系统上的具体安装位置:
python
import cython
print(cython.__file__)
这会打印出cython的安装路径。
通常你不需要手动设置Cython的路径,只要确保pip安装目录在系统PATH中,编译工具就可以自动找到它。
但如果找不到,你就需要在编译命令中明确指定Cython的路径,或者将其目录加到PATH中。

debian系统有python2和python3,用pip install cython安装Cython后,python2可以import cypthon,python3不能。

在Debian系统上同时有Python 2和Python 3的情况下,使用pip安装Cython时,需要注意为哪个Python版本安装:
1. 使用`pip`默认会为Python 2安装:
pip install cython
这会把Cython安装到Python 2的site-packages目录下。
2. 使用`pip3`可以为Python 3安装:
pip3 install cython 
这会把Cython安装到Python 3的site-packages目录下。
3. 你也可以为指定版本安装:
pip2 install cython # for Python 2
pip3.6 install cython # for Python 3.6
所以在你的情况下,很可能是只为Python 2安装了Cython,而Python 3无法导入,是因为没有安装到Python 3的site-packages目录下。
解决方法是:
1. 使用pip3或具体版本pip安装Cython给Python 3
2. 或者指定Python 3版本运行时使用的pip:
python3 -m pip install cython
这会自动为当前运行的Python 3安装Cython。
3. 最后可以将Cython的安装目录添加到Python 3的环境变量PYTHONPATH中,这样也可以被Python 3导入。
所以核心是要确保为你需要的Python版本安装Cython,或者设置好PYTHONPATH变量。

我用pip3 install cython 安装不能import cpython,用python3 -m pip install cython就可以,这是为什么,两者有什么区别?

pip3 install cython 和 python3 -m pip install cython 在安装Cython时存在一些区别:
1. pip3 和 python3 -m pip 是不同的pip版本
- pip3 默认指向系统全局的Python 3 pip,安装到系统的site-packages目录下
- python3 -m pip 是Python 3自带的pip,安装到当前Python 3的site-packages目录下
2. PYTHONPATH的不同
- 使用pip3时,系统site-packages目录不一定在当前Python 3的PYTHONPATH中
- 使用python3 -m pip时,会自动把安装目录加入PYTHONPATH
3. 权限的不同
- pip3 需要较高权限来写入系统目录,可能因权限问题安装失败
- python3 -m pip 在用户目录内安装,权限较小
所以使用pip3时,你需要确认:
1. cython是否正确安装到了Python 3的site-packages目录下
2. 此目录是否在PYTHONPATH变量中
3. 写入该目录的权限是否正确
这就导致了即使安装了cython也无法导入的情况。
而使用python3 -m pip可以避免这些问题,它会自动把cython安装到当前Python 3的site-packages中,并加入PYTHONPATH,以正常导入。
所以当pip3 install cython不work时,建议更换为python3 -m pip install cython,则可以正确安装并导入cython。

如何卸载python3 -m pip install cython安装的cython?

如果是通过 python3 -m pip install cython 安装的Cython,可以通过以下步骤卸载:
1. 使用pip命令卸载Cython包:
bash
python3 -m pip uninstall cython
这将卸载cython包。
2. 清理编译生成的文件:
Cython编译过程会在当前目录下生成一些编译产物,包括 .c .so 文件等。可以手动删除这些文件。
另外还可能有一些缓存文件在`~/.cython/`目录下,可以考虑清理该目录。
3. 重新编译项目
如果项目中包含了Cython源码文件(.pyx、.pxd),卸载Cython后需要重新编译项目。
可以删除项目中生成的 .c .so 文件,然后重新编译。需要确保编译命令里不再引用Cython。
4. 清理缓存
可以考虑清理Python的缓存,例如`__pycache__`目录,因为里面可能存在旧的Cython编译结果。
find . -name __pycache__ -delete
以上步骤可以尽量清理卸载Cython时遗留的文件。如果完全重新编译项目,应该可以去除Cython的影响,无需保留它的任何编译产物。 

python3 -m pip install cython中的-m是什么意思?

在python3 -m pip install cython中,-m表示以模块模式运行pip。
python中可以使用-m选项运行模块作为脚本,这种运行模式称为模块模式(module mode)。
例如:
python
python3 -m pip
等同于:
python
python3 -c "import pip; pip.main()"
即执行pip模块的main()函数。
使用-m的好处是避免了不同系统中pip命令的路径查找问题。无论pip安装在哪里,都可以用-m模式加载pip模块。
所以:
python
python3 -m pip install cython
就是以模块模式执行pip安装cython,避免依赖具体的pip可执行文件的路径。
总结为:-m表示模块模式,可以更规范地执行模块的主函数;在pip install中使用-m,可以避免依赖具体的pip路径。

有使用其他模块模式python3 -m的例子吗?

使用python -m模块名 替代 直接执行模块脚本的例子还有:
- python3 -m http.server 
代替执行: python3 -m SimpleHTTPServer
- python3 -m unittest
代替执行: python3 -m unittest.main
- python3 -m pdb
代替执行: python3 -m pdb.main
- python3 -m json.tool
代替执行: python3 -m json.tool
- python3 -mvenv
代替执行: python3 -m venv
等等。
几个常见的使用模块模式的优点:
1. 可以避免 PYTHONPATH、PATH环境变量带来的影响
2. 更规范地执行模块的main函数入口
3. 模块模式可以带参数,灵活控制模块的执行
4. 即使模块安装位置变化,也可以正常执行
5. 可以控制不同版本的python来执行模块
总之,使用python -m模块 模式运行,是一种更加标准和可靠的执行Python模块的方式。这在某些情况下很有帮助。

猜你喜欢

转载自blog.csdn.net/eidolon_foot/article/details/132718782