我有一个项目目录结构如下(我认为这很标准):
my_project
setup.py
mypkg
__init__.py
foo.py
tests
functional
test_f1.py
unit
test_u1.py
Run Code Online (Sandbox Code Playgroud)
我正在使用py.test作为我的测试框架,我希望能够py.test tests在my_project目录中运行以运行我的测试.这确实有效,直到我尝试import mypkg在测试中使用(例如)导入我的应用程序代码.那时,我收到错误"没有名为mypkg的模块".在进行一些调查时,似乎py.test运行测试与测试文件的目录sys.path,但不是py.test运行的目录.
为了解决这个问题,我conftest.py在我的tests目录中添加了一个文件,其中包含以下代码:
import sys, os
# Make sure that the application source directory (this directory's parent) is
# on sys.path.
here = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, here)
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但它是确保测试看到应用程序代码的好方法吗?有没有更好的方法来实现这一点,或者我在如何构建项目时做错了什么?
我已经看过其他一些使用的项目py.test(例如,pip但是我看不到代码做了这样的事情,但是运行py.test tests似乎在那里工作.我不知道为什么,但我担心他们可能以更简单的方式取得了同样的结果.
我查看了py.test文档,但是我看不出这个问题的解释或建议的方法来处理它.
我在Linux系统上有一个PostgreSQL数据库,我想从我的Windows PC上访问它.但我能找到的唯一Windows二进制文件是完整的安装程序,其中包括数据库服务器和客户端.
是否有可能从任何地方获得PostgreSQL的仅客户端Windows二进制安装?
(澄清一下,我想要标准的PostgreSQL客户端,psql - 不是GUI客户端或独立工具).
我想shutil.rmtree在Python中使用删除目录.有问题的目录包含一个.git控制目录,git标记为只读和隐藏.
只读标志导致rmtree失败.在Powershell中,我会"强制"强制删除只读标志.Python中有相应的东西吗?我真的不想两次走完整棵树,但onerrorrmtree 的论据似乎没有重试这个操作,所以我不能用
def set_rw(operation, name, exc):
os.chmod(name, stat.S_IWRITE)
shutil.rmtree('path', onerror=set_rw)
Run Code Online (Sandbox Code Playgroud) PowerShell包括一个内置的别名diff的Compare-Objectcmdlet的.这对我来说真的很烦人,因为我习惯使用Unix diff命令.
有没有办法删除内置diff别名,或以其他方式覆盖它?
我试过了:
del alias:diff - 给出错误"Alias未被删除,因为别名diff是常量或只读"set-alias diff diff.exe - 给出类似于上面的错误function diff { diff.exe $args } - 别名优先如何访问"真正的"差异(无需记住其他名称)?
如果它很重要,这是Powershell 3.我还没有在版本4中尝试过,虽然版本4也有wget别名,但不像diff我可以删除那个...
我发现标准的Powershell错误显示(红色文字,多行显示)有点分散注意力.可以自定义吗?
我正在尝试编写一个带有多个参数的函数,这些函数可以来自命令行,也可以来自管道.参数可以是字符串或目录对象.这个想法是以下任何调用应该工作:
Test-VEnv '.\MyPath', '.\AnotherPath'
Test-VEnv (dir)
'MyPath', 'AnotherPath' | Test-VEnv
dir | Test-VEnv
Run Code Online (Sandbox Code Playgroud)
以下代码几乎可以工作:
function Test-VEnv {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true, Position=0,
ValueFromPipeline=$True,
ValueFromPipelineByPropertyName=$true)]
[Alias('FullName')]
[String[]]$Path
)
process {
foreach ($P in $Path) {
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
它处理来自管道和命令参数的字符串,并处理来自管道的目录对象(通过ValueFromPipelineByPropertyName和FullName别名).但它不会在命令行上处理目录对象,所以
dir | Where-Object { Test-VEnv $_ }
Run Code Online (Sandbox Code Playgroud)
失败,因为它将目录对象转换为字符串,使用Name属性而不是FullName,后续代码失败.
有谁能告诉我如何实现我想要的?
我知道即使我可以让它工作,它可能不是一个特别好的设计.但据我所知,这就是内置的Test-Path的工作方式,所以我想在发明自己之前尝试遵循标准行为......
我有一张包含数据的excel表格(游戏Leage of Legends的符文,它的价值):
Name, Type, Price, Effect, ...
Run Code Online (Sandbox Code Playgroud)
我想添加一个我可以过滤的额外列,其中包含标签(很像这里分配给问题的标签).例如,一行可能有"AD,PERLEVEL,RECOMMENDED"标签.我可以简单地将标签放在一个单元格中,逗号分隔如下,并使用"包含"过滤器.但是像Excel 2010的自动过滤器(列出所有正在使用的值,并允许您勾选和取消选择要选择的值)之类的东西就是我所追求的.
是否有可能实现这样的目标?
如果无法使用可勾选列表,我可以使用过滤器搜索来选择值(这样可以实现该部分).如果我能以某种方式显示唯一标签,那就可以完成这项工作.
文档说我可以:
lxml可以从本地文件,HTTP URL或FTP URL进行解析.它还可以自动检测和读取gzip压缩的XML文件(.gz).
(摘自"Parsers"下的http://lxml.de/parsing.html)
但一个快速的实验似乎暗示:
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:45:13) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from lxml import etree
>>> parser = etree.HTMLParser()
>>> from urllib.request import urlopen
>>> with urlopen('https://pypi.python.org/simple') as f:
... tree = etree.parse(f, parser)
...
>>> tree2 = etree.parse('https://pypi.python.org/simple', parser)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "lxml.etree.pyx", line 3299, in lxml.etree.parse (src\lxml\lxml.etree.c:72655)
File …Run Code Online (Sandbox Code Playgroud) 我正在考虑在C#中编写一个控制台应用程序,我希望将历史,完成和命令行编辑功能纳入GNU readline(但不一定非常广泛!)
是否有.net的现有库提供此类功能?我想一个选择是使用互操作服务来调用GNU readline.但是有原生选择吗?
我目前正在将编辑器从Vim切换到VS Code.我在vim中喜欢的一个功能是能够在文本区域(:!命令)上运行外部命令.我一直无法在VS Code中找到明显的等价物.
VS Code中是否提供此功能?或者是否有提供它的扩展?
(作为一个更普遍的问题,找到这样的东西的最佳方法是什么?是否有一个网站或任何描述如何在VS Code中执行其他编辑器的常见任务的东西?)
powershell ×3
python ×3
.net ×1
alias ×1
arguments ×1
c# ×1
excel ×1
filter ×1
lxml ×1
postgresql ×1
pytest ×1
readline ×1
shutil ×1
unit-testing ×1
windows ×1