python git版本库,包,模块,pypi发布开源包, pycharm项目等概念

一个.py文件就是一个python模块,一个包含__init.py文件的文件夹就是一个python包(包和模块的具体区别这这里)。

如果我们要把自己写好的文件用git进行版本管理,需要用git init命令这包的文件夹内创建一个.git的隐藏文件夹,从此这个包(文件夹)就可以使用git进行版本管理了。而且这个带.git文件夹的包从此也可push到github进行托管了。注意每次git push所操作的单位是整个包,包的根目录需要有.git文件夹。

如果我们写好的包需要发布到pypi上供其他人通过pip 的方式使用怎么办?注意发布我们的包到pypi上和git版本管理是两回事,不需要创建.git隐藏文件夹。而是需要这包的根目录创建一个setup.py,并且用python setup.py sdist bdist_wheel 命令生成一个可供发布的文件在dist文件夹里,然后用twine upload dist/* 推送到pypi网站上(参见:https://packaging.python.org/tutorials/packaging-projects/)。

使用pycharm的用户都会发现pycharm点击file会有新建项目,打开项目等选项。也就是说pycharm是把一些.py文件组合成项目来管理的(比如这同一个项目里可以同意修改文件名,模块名,重构代码,搜索等)。那么之前我们已经有知道__init__.py代表文件夹是一个python包,有.git隐藏文件代表文件夹是git版本库,有setup.py代表文件夹可以将来发布(这里说的不严谨),那么pycharm的项目是以什么为代表的呢?答:pycharm用一个.idea的隐藏文件夹代表这是一个pycharm项目。.idea文件夹存储了事先pycharm各个功能所必须的东西,比如代码回溯,全局搜索,等等 。

关于嵌套

一个python包(本地的或者通过pip在pypi网站下载的)里可以有一个或者多个python包(其实只要每个子文件夹下有个__init__.py文件就行)。
一个python模块里可以有多个函数,类,对象等。
一个git repository库可以包括多个git 库吗?[答案是可以!] (https://stackoverflow.com/questions/17775828/github-include-from-another-repository) 你可能会问,为什么会有这个需求???因为子模块允许您将项目保留在单独的存储库中,但仍可以将它们作为其他存储库的工作目录中的文件夹进行引用。

一个git仓库的一个本地包可以单独被发布到pypi上吗?可以。因为我碰到了这个需求。我之前做一个项目,写了很多本地的包,其实可以发到pip上让我其他相关项目继续用。所以就需要把原来项目内的一个本地包想办法发不到pypi上。
一种方法是我把这个包(文件夹)单独剪切出来,上传到pypi上。但是就需要更改项目中所有导入该包的方式。比如之前在项目中我import project.package1.subpackage.module 。现在我需要pip install subpackage; import subpackage.module.

(更新,不过)

Reference

  1. https://packaging.python.org/tutorials/packaging-projects
  2. https://stackoverflow.com/questions/17775828/github-include-from-another-repository
  3. https://www.vogella.com/tutorials/GitSubmodules/article.html#:~:text=Git%20allows%20you%20to%20include,the%20parent%20repository’s%20working%20directory.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值