假设我正在构建一个模拟香蕉的python项目,我将如何构建它?我通常以
开头mkdir bananas
然后我在bananas.py中编码,这是文件,直到我开始添加README,LICENSE,CONTRIBUTORS等,并且python文件刚刚丢失在元文件中。然后我再做同样的事情
mkdir bananas
mv *.py* bananas
以便将实际代码与元分开。现在我有一个双重的重复dir结构,
$ ls /path/to/bananas
README
LICENSE
CONTRIBUTORS
bananas/banana.py
所以这最终在
bananas/bananas/banana.py
这对我来说感觉不对。我最接触的代码被隐藏得太远了。我还讨厌像
这样的进口商品from bananas.bananas import Banana
我只想做
from bananas import Banana
有什么想法?我错过了什么?我引用HGP:
重复路径会让您的工具和您的工具感到困惑 开发人员。不必要的筑巢对任何人都没有帮助(除非他们是 怀旧的整体SVN回购)。
答案 0 :(得分:2)
就我个人而言,我没有看到像这样构建它的任何问题,而且这是我在自己的项目中所做的。根据我尝试过的一些在线指南,它似乎是推荐的方法。
例如,从Open Sourcing a Python Project the Right Way开始,作者定义了一个示例项目的结构:
private async void Login_Click(object sender, RoutedEventArgs e)
{
ActiveCareService.UserClient client = new ActiveCareService.UserClient();
var userFromService = client.DoLoginAsync(@"username").Result;
await client.CloseAsync();
var dialog = new MessageDialog("Logged in as " + userFromService.FirstName); **This just returns a string of the type of object it is, not the actual object. This is what I'm struggling with.**
await dialog.ShowAsync();
Frame.Navigate(typeof(YourSites));
}
因此,在这种情况下,您最终会得到$ pwd
~/code/sandman
$ tree
.
|- LICENSE
|- README.md
|- TODO.md
|- docs
| |-- conf.py
| |-- generated
| |-- index.rst
| |-- installation.rst
| |-- modules.rst
| |-- quickstart.rst
| |-- sandman.rst
|- requirements.txt
|- sandman
| |-- __init__.py
| |-- exception.py
| |-- model.py
| |-- sandman.py
| |-- test
| |-- models.py
| |-- test_sandman.py
|- setup.py
这样的路径。
答案 1 :(得分:1)
有时这是不可避免的。只需查看标准库的datetime模块即可。
datetime.datetime datetime.datetime.today().date()
你可以做相对进口。香蕉中的文件只需要
from bananas import Banana # or
from .bananas import Banana
无论如何,建议通过使模块可移动来重复使用模块m)
有些人导入模块,而不是类
from bananas import bananas as bananaModule
bananaModule.banana()
你也可以给你的项目一个花哨的代号,使它成为:
from fancyish.bananas import bananas as bananaModule