如何查找Python模块源代码的位置?

608

我该如何学习一个给定的Python模块源文件安装在哪里?在Windows和Linux上的方法是否不同?

我尝试查找特定的datetime模块的源代码,但我也对更通用的答案感兴趣。

21个回答

11

10

看看这个巧妙的“cdp”命令,它可以跳转到包含指定Python模块源代码的目录:[链接]

cdp () {
  cd "$(python -c "import os.path as _, ${1}; \
    print _.dirname(_.realpath(${1}.__file__[:-1]))"
  )"
}

谢谢!这正是我在寻找的。奇怪的是他们为什么不把这样的东西包含在Python发行版中。 - Antony Hatchkins

8

从终端检查是否安装了多个Python版本的另一种方法。

$ python3 -m pip show pyperclip

位置:/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-

$ python -m pip show pyperclip

位置:/Users/umeshvuyyuru/Library/Python/2.7/lib/python/site-packages


8

如果有人需要现在的答案更新,我在使用 Python 3.9,并使用 Pip 管理软件包。只需使用 pip show 命令,例如:

pip show numpy

它将为您提供所有细节,包括pip存储所有其他软件包的位置。


5
例如,在Ubuntu 12.04上,用于Python2的numpy软件包可以在以下位置找到:
/usr/lib/python2.7/dist-packages/numpy

当然,这并不是通用答案。

1

对于那些喜欢GUI解决方案的人:如果您正在使用Spyder等图形用户界面(Anaconda安装的一部分),则只需右键单击模块名称(例如“import csv”中的“csv”)并选择“转到定义” - 这将打开文件,但还可以在顶部看到精确的文件位置(“C:....csv.py”)


1
并非所有的Python模块都是用Python编写的。日期时间模块恰好就是其中之一,它不是用Python编写的,在Linux上是datetime.so。
如果想要使用它,你需要下载Python标准库的源代码。

2
Daryl:你误解了Jim的回答,“Datetime恰好是Python模块之一,不是用Python编写的”。 - Matthew Trevor

1
如果您没有使用解释器,则可以运行以下代码:
import site
print (site.getsitepackages())

输出:

['C:\\Users\\<your username>\\AppData\\Local\\Programs\\Python\\Python37', 'C:\\Users\\<your username>\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages']

数组中的第二个元素将是您的包位置。在这种情况下:
C:\Users\<your username>\AppData\Local\Programs\Python\Python37\lib\site-packages

0
在像Spyder这样的IDE中,先导入模块,然后单独运行该模块。 输入图像描述

导入并打印模型的 str() 是对屏幕截图中所做操作更准确的描述,此解决方案与IDE无关。 - mousetail
2
欢迎来到StackOverflow!请勿使用图片发布代码。图片难以阅读,无法搜索,并且对某些读者不可见。相反,请直接在答案正文中包含任何相关的代码。 - Brian61354270

0
受到这个答案的启发。
利用grepawk工具。 我发现这在bash shell中有效。 pip show <任意已安装的包> | grep Location | awk -F': ' '{print $2}' 这个想法是过滤结果中的模块路径。
$pip show pygments
Name: Pygments
Version: 2.16.1
Summary: Pygments is a syntax highlighting package written in Python.
Home-page: None
Author: None
Author-email: Georg Brandl <georg@python.org>
License: BSD-2-Clause
Location: $USER/.local/lib/python3.8/site-packages
Requires:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接