外网访问 pydoc 文档

601 阅读1分钟

外网访问 pydoc 文档

近期在做一个团队项目,产生大量的函数与类,不好查找也不好团队使用,最原生的python代码文档格式查阅困难,所以就有了做标准API文档的念头。

经过bing、百度、google最终确定了大体的思路:

在云端用python原生的pydoc自动生成项目文档

  • 环境

    1. 阿里云ECS 1核2GB CentOS7
    2. anaconda3 ---python3.6版本
    3. 遵循PEP8风格规范的项目源文件
  • 配置过程

    1. 在本地尝试使用pydoc -w <name>生成离线文档:只能生成一个py文件的html文档,调用包的文档有页面链接但是没有对应的html文件,需要一次手动生成或者分析网页结构写自动化生成程序

    2. 在本地尝试使用pydoc -p port启动指定端口的web服务,本地查看成功,内容详细,链接关联度很强

    3. 尝试放入ECS,使用FileZilla Client将工程文件传入指定的非root用户文件夹内,在ECS中的工程文件夹路径下使用命令$ pydoc -p port启动web服务器。外网尝试访问,失败。

    4. 排除是阿里云安全组的影响后,把问题确定在pydoc本身的问题上。

    5. 在ECS的anaconda3路径下用find命令查找pydoc.py文件

      $ find . -name pydoc.py
      ./lib/python3.6/pydoc.py
      ./pkgs/python-3.6.4..................
      ./pkgs/..............................
      
    6. 找到了,然后使用vim查看/修改pydoc.py,这里可以直接在本地电脑上查看,然后在ECS上修改借鉴了一位大大的记录博客直接在pydoc.py中查找host字段

      vim在正常模式下用/host查找

      self.host = "localhost"语句的localhost改为**ECS的内网ip*这里是一个坑,ECS是不知道自己的公网IP的,也不能和jupyter notebook一样写

    7. 外网尝试访问ECS公网IP:port成功访问。

    8. $ screen -R pydoc建立一个新的shell。输入$ pydoc -p port启动web服务。

    9. Ctrl+a再按d退出新shell窗口

      $ logout登出ssh连接

    这样配置就完成了。