这应该是地球上最简单的问题,但是即使经过广泛的搜索和修补,我仍然在寻找一种“正确的”方式来放置目录结构并设法正确运行pytest等方面深陷困境。
假设我有一个名为apple的程序。
|- README.md
|- apple
| |-- __init__.py
| |-- apple.py
| - tests
| |-- test_everything.py
apple.py包含一些函数,为方便起见,我们将其称为一个eat()
。该test_everything.py
文件包含一些测试,例如assert eat()=="foobar"
。太好了,太容易了,但是乐趣就开始了:
__init__.py
在苹果目录…正确吗?空或里面应该有什么?py.test
从根目录调用是最佳实践吗?还是py.test tests
?__init__.py
的测试目录中都有一个,但是在py.test文档中明确指出这是错误的。那为什么上帝啊test_everything.py
文件顶部的内容是:import apple
或from apple import *
?或完全其他的东西eat()
或调用了这些函数apple.eat()
?os.path.dirname
在python中进行操作这应该很容易,但是我已经看到了上面的每种组合,甚至都没有谈论过tox和无数其他工具。然而,即使有丝毫错误,您也会抛出一些ImportError: No module named 'apple'
或其他一些时髦的错误。
什么是“正确”方式?该建议和github等上的现有代码遵循极为不同的约定。对于经验丰富的编码器,这应该容易得多。
__init__.py
在苹果目录…正确吗?空或里面应该有什么?是,对的。最经常是空的。如果放入foo = 42
,您可以稍后再做from apple import foo
,from apple.apple import foo
如果放入,则需要做apple.py
。尽管它看起来很方便,但您应该谨慎使用。
py.test无论如何都应该能够找到您的测试,但请参见下文。
__init__.py
的测试目录中都有一个,但是在py.test文档中明确指出这是错误的。那为什么上帝啊因此,您可以在提供通用测试功能的测试中导入文件。在py.test中,通过在名为的文件中创建固定装置可能会更好地实现tests/conftest.py
。
from apple import apple
apple.eat()
那似乎很脆弱。我建议
(a)将环境变量PYTHONPATH设置为指向所在的文件夹README.md
,或者更好
(b)创建一个setup.py文件(与您的README.md
文件处于同一级别),这是最小的文件:
from setuptools import setup
setup(name='apple', packages=['apple'])
像这样运行文件:
python setup.py develop
现在apple
可以在全球范围内使用,您再也不会遇到no module named apple
问题,例如,您可以从根文件夹或tests文件夹运行py.test。
您可以setup.py
在https://python-packaging-user-
guide.readthedocs.org/en/latest/index.html
的《
Python打包用户指南》中了解更多信息。
问题内容: 我从事过maven项目,其中目录结构如下: 我想知道是否存在其他目录结构约定。此约定是Maven特定的还是适用于所有Java?我有一个需要多种编程语言的项目,并对是否存在某种标准感到好奇。 问题答案: 它是Maven特定的目录结构约定,但是它在Maven领域之外也很流行,因为它很好(就像其他有意义的约定一样),没有理由不将其与Ant管理的项目一起使用常规Java项目。甚至项目的Java
当默认的项目结构不适用时,可以自定义配置。查看 Gradle 文档中 Java plugin 部分以了解如何在纯 Java 项目中进行配置。 Android plugin 使用了类似的语法,但因为 Android 有自己的 sourceSets,所以需要配置到 android 块中。下面的例子使用了旧的项目结构(Eclipse),并把 androidTest 的 sourceSet 映射到 tes
前言 这一篇,我们将接着上篇来完成创建项目文件、目录结构。 回顾 先回顾一下现在项目有哪些东西了: . ├── app │ ├── app.vue │ ├── common │ │ ├── img │ │ ├── js │ │ └── scss │ ├── index.html │ ├── index.js │ ├── router
主要内容:什么是目录?什么是目录? 目录可以被定义为磁盘上相关文件的列表。 该目录可以存储一些或整个文件属性。 为了在不同的操作系统上获得不同文件系统的好处,可将硬盘划分为不同大小的分区数。 分区也称为卷或小型磁盘。 每个分区必须至少有一个目录,其中可以列出分区的所有文件。 为目录中的每个文件维护一个目录条目,该目录存储与该文件相关的所有信息。 一个目录可以被视为一个文件,其中包含一堆文件的元数据。每个目录都支持文件上
根目录 在 sbt 术语中 “根目录”是一个包含项目的目录,所以如果创建一个 hello 项目将包含 hello/build.sbt 和 hello/hw.scala 在 hello world 项目例子中,其中hello是根目录 源代码目录结构 源代码可以放到项目的根目录类似于 hello/hw.scala , 但是在真正的项目很少利用这样的代码结构,这样会使项目变得混乱, sbt 的项目目录结
Jekyll 的核心其实是一个文本转换引擎。它的概念其实就是:你用你最喜欢的标记语言来写文章,可以是 Markdown, 也可以是 Textile, 或者就是简单的 HTML, 然后 Jekyll 就会帮你套入一个或一系列的布局中。在整个过程中你可以设置 URL 路径,你的文本在布局中的显示样式等等。这些都可以通过纯文本编辑来实现,最终生成的静态页面就是你的成品了。 一个基本的 Jekyll 网站