如何在python中添加自己写的模块——文本相似度论文复现记录(一)
最近船船在学习文本相似度的相关知识,初步调研阶段结束后,船船和搭档开始复现近年来一些比较经典的相似度论文了。但是,垃圾的我们在把代码下载下来后就碰到了问题,代码中有一个模块一直报错,错误提示“No module named XXX”,下载这个包时也一直报错。在许久没有进展后,我们求助于师姐才得知缘由——原文作者应该自己写了这个模块,我们需要把作者写得这个模块添加到我们的python环境中。
通过网上寻找教程,我们顺利的解决了这个问题,不过为了以后方便,还是决定记录一下这个问题及其解决方法。
- 第一步当然是写好自己的模块啦,不过我也没写过,我也不懂,这一步就先省略啦~
- 假装你已经写好了这个模块,并将其命名为“wmd”,那么,在这个文件夹同级的目录下,还需要写一个setup.py文件。当然这个文件我也没有写过,不过我可以给出这个文件的参考格式。(参考格式是我综合元苍子的简书教程https://www.jianshu.com/p/3fea4a4f4e41和我下载下来的源码得出的,有问题的话感谢朋友们的指正~)
from setuptools import setup, Extension
# py_modules 中,是自己编写的模块的文件夹(wmd)中的两个py文件constants.py 与 __init__.py
# py_modules 中可以有多个py文件,按照给出的格式继续添加到列表中即可
setup(name="模块文件夹的名字(wmd)", version="版本号", author="作者", py_modules=["wmd.constants", "wmd.__init__"])
- 接下来就是构建模块了。首先在命令行中进入到wmd这个文件夹的上一级文件夹,然后输入
python setup.py build
。不是所有人都输入“python”,这取决于你是如何调用你的python的,也有的人是“python3”或者“python27”等等。这一行的代码运行完后,在模块文件夹(wmd)的同级目录下会生成一个build目录。 - 继续构建模块。在命令行中继续输入
python setup.py sdist
,在模块文件夹的同级目录下会生成一个dist目录。将其中存放的压缩包解压就基本完成工作了。 - 在命令行中执行
python setup.py install
- 最后,在python中
import wmd
,就会惊喜的发现成功啦!
以上就是我们解决这个问题的全过程。这是菜鸟船船第一次在csdn发博客,如果有什么问题的话感谢指正~~
追加:
在解决这个问题后,wmd这个包我仍然无法正常使用,后来发现是因为wmd中引用了一个扩展模块,setup.py中写定的扩展模块的编译参数出了问题。
https://www.cnblogs.com/cposture/p/9029023.html
在这个教程中有较为详细的扩展模块及其参数的介绍,但我目前还不知道如何解决这个问题。