主要错误
tldr; PIP试图用TestPypi解决依赖性,但它们在另一个索引(PYPI)中。答案结束时解决方法。
我发布到 testpypi 的事实是发生这种情况的原因。我将解释为什么我所做的错误会出现,然后我将展示您将来如何解决这个问题。
pypi 和testpypi
pypi 之间的差异是Python包装指数。这是Python软件包的巨型索引,可以使用 pip install
安装。
TestPypi 是指定用于测试和发布的Python软件包索引,而无需触摸真实的软件包索引。在学习如何发布软件包时,它可能很有用。主要区别是它是一个完全独立的存储库。因此, testpypi 上的内容可能不是 pypi 上的内容。
我的研究有限,因此,如果我使任何人感到困惑,主要区别是它们是两个不同的软件包索引。一个是出于测试目的。
我将软件包发布到 testpypi 上,并将我的 pip install 设置为从该存储库安装。 不是 pypi ,而是 testpypi 。
为什么当我定义项目的依赖关系时,依赖性解决方案失败
,我根据PYPI的存在定义了它们。大多数依赖项都存在于PYPI中。 不是 testpypi。这意味着,当我从testpypi中要求我的软件包时,PIP只会查看testPypi,而PIP安装程序工作流则落入了这样的模式:
0.5。将获取存储库设置为testpypi和不是 pypi。
- 从testpypi
- 安装中拉软件包并检查依赖项
- 找到第一个依赖关系(例如BeautifulSoup4)
- 从testpypi中
- 成功安装BeautifulSoup44
- 。这是因为BeautifureSoup4 实际上是在TestPypi中存在的。 - 转移到另一个依赖性(例如Rich)
- 无法从TestPypi中拉出
- 。 TestPypi中不存在Rich。 - 找不到返回依赖。
为什么某些依赖性正如您在工作流程步骤 5中看到的奇怪作用。
, beautifulsoup4 包装在TestPypi上找到。 (有人把它放在那里)。
态
但是,正如您在步骤 7中看到的。之所以发生此问题,是因为我将仓库设置为从testpypi安装,因为我的包裹的位置。这导致PIP使用testpypi。对于每个依赖性也是如此。
我如何解决。
我通过使用TestPypi来验证准确的构建伪像出版,然后跳到正常 pypi来测试安装和依赖安装。
解决方法
从testpypi
python3 -m pip install -i https://test.pypi.org/simple/simple/< package name>
install from pypi(默认情况>
python3 -m python3 -m pip install install <软件包名称>
testPypi的安装软件包,但pypi的依赖项
python docs docs很好地解释了这一点。
如果要允许PIP还从PYPI下载软件包,则可以指定-Extra-index-url指向PYPI。当您要测试的软件包具有依赖项时,这很有用:
python3 -m pip install-index-url https://test.pypi.org/simple/-extra-index-url https:// pypi .org/simple/your-ackage
找不到模块:错误:无法解决'./app'
我遇到了同样的问题,经过长时间的研究,我意识到自己必须包括文件的后缀,我通过添加来解决我的问题 .tsx
./应用程序
实例:
具有错误的代码:<代码>从'./app'导入应用程序;
编译已修复:来自'./app.tsx';
的导入应用程序
如果解决了您的问题,请尝试一下!
我认为您应该使用 Groupby,Nunique和NP.Where
来解决此问题。
请参阅以下有关此问题的讨论。
pandas-dataframe-check-check-check-frame-check-if-multiple-multiple-multiple-lows-有个性值
修复了问题,通过更新关闭内部的值来修复问题。
db.collection(collectionName)
.whereField("payer", isEqualTo: Auth.auth().currentUser?.uid ?? "")
.whereField("contributor", isEqualTo: contributorID)
.addSnapshotListener { snapshot, error in
self.toGetAmount = 0
guard let doc = snapshot?.documents else {
print("No Doc Found")
return
}
DispatchQueue.main.async {
self.toGetbills = doc.compactMap { queryDocumentSnapshot -> Bill? in
let result = Result { try queryDocumentSnapshot.data(as: Bill.self) }
switch result {
case .success(let bill):
self.toGetAmount += bill.itemPrice
return bill
case .failure( _):
print("Failure To Get Bill Request")
return nil
}
}
}
}
如果您只希望循环继续进行直到到达工作表的末端,则可以使用:
function forloop() {
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
let sheet = spreadsheet.getSheetByName("Sheet1");
var rows = sheet.getDataRange().getValues().length;
for (let i = 1; i < rows + 1; i++) {
let currentCell = sheet.getRange(i, 1).getValue();
let nextCell = sheet.getRange(i + 1, 1).getValue();
if (currentCell + nextCell === 3) {
sheet.getRange(i, 1).setBackground("#8e7cc3");
}
} // function ends
}
使用您给出的代码段,您才会在CurrentCell和NextCell的值最多总和3时突出显示该框的颜色。
但是,但是什么。我相信您正在尝试实现,这是每个第三行的强调,因此,如果您正在寻找的话,这也是解决方案:
function forloop() {
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
let sheet = spreadsheet.getSheetByName("Sheet1");
var rows = sheet.getDataRange().getValues().length;
for (let i = 1; i < rows + 1; i++) {
if (i%3 === 0) {
sheet.getRange(i, 1).setBackground("#8e7cc3");
}
} // function ends
}
这是我第一次回答溢出问题的问题:),希望它会有所帮助。
JavaScript中的示例:可以对好的零件进行调整:
var doubled_words = /([A-Za-z\u00C0-\u1FFF\u2800-\uFFFD]+)\s+\1(?:\s|$)/gi;
\ b使用\ w用于单词边界,其中\ w等于[0-9A-Z_A-Z]。如果您不介意这种限制,那么接受的答案就可以了。
实际上,这与默认值无关,除非当您编写具有可变默认值的功能时,它通常是出乎意料的行为。
>>> def foo(a):
a.append(5)
print a
>>> a = [5]
>>> foo(a)
[5, 5]
>>> foo(a)
[5, 5, 5]
>>> foo(a)
[5, 5, 5, 5]
>>> foo(a)
[5, 5, 5, 5, 5]
此代码中没有默认值,但是您会遇到完全相同的问题。
问题在于 foo
是修改 当呼叫者不期望这是一个可突变的变量。如果称为 append_5
之类的函数,则这样的代码就可以了。然后,呼叫者将调用该功能以修改其传递的值,并可以预期行为。但是,这样的函数不太可能采用默认参数,并且可能不会返回列表(因为呼叫者已经对该列表有一个引用;它刚刚通过的列表)。
您的原始 foo
带有默认参数,不应修改 a
是否已明确传递或获得默认值。您的代码应仅留下可变的参数,除非从上下文/名称/文档清楚地表明应该修改这些参数。无论我们是在Python中,是否涉及默认参数,使用作为本地临时性作为本地临时性作为本地临时性的参数是一个非常糟糕的主意。
如果您需要在计算某些内容的过程中破坏性地操纵本地临时性,并且需要从参数值开始操纵,则需要制作副本。
位置:粘性
不执行您认为做的事情。向下滚动时,它将使元素粘在标头上。
您可以使用flexbox或网格将元素粘在底部。
例如,在此处查看:
flexbox: https://dev.to/nehalahmadkhan/how-to-make-foot-foot-------------------------------------page-3i14
只是要知道,在某些旧手机上, 100VH
可能是一个问题 - 由于未计算的额外标头间距。
位置粘性
如果您必须支持IE11,则不起作用。
重新格式
对于这样的工作来说是整洁的。在匿名函数中定义一个迭代的过程(具有函数(x)
或缩写> \(x)
)的过程,然后将其放入 lapply
。 摘要
可以像使用相应的列名称中的数据框那样,将其子集属于所需列。
让我们在一个示例中使用 nhanes
数据包含 MICE
。
dvs <- c('age1', 'age2', 'age3')
res <- lapply(dvs, \(x) {
mi <- with(imp, glm(reformulate(c('bmi', 'hyp', 'chl'), x), family=binomial))
s <- summary(pool(mi), exponentiate=TRUE, conf.int=TRUE)
`rownames<-`(s[c('estimate', '2.5 %', '97.5 %')], s$term) |> as.matrix()
}) |> setNames(dvs)
了这样的命名列表,
res
# $age1
# estimate 2.5 % 97.5 %
# (Intercept) 2.197201e+04 0.0000000 Inf
# bmi 1.999346e+00 0.4691464 8.520549
# hyp 4.331347e-08 0.0000000 Inf
# chl 9.441578e-01 0.8403936 1.060734
#
# $age2
# estimate 2.5 % 97.5 %
# (Intercept) 0.9300514 0.0002224722 3888.105740
# bmi 0.8891490 0.6550513927 1.206907
# hyp 2.8818840 0.2054892623 40.416981
# chl 1.0046189 0.9757483655 1.034344
#
# $age3
# estimate 2.5 % 97.5 %
# (Intercept) 3.5383401 1.087542e-07 1.151206e+08
# bmi 0.6442681 2.792523e-01 1.486403e+00
# hyp 5.9651279 5.954159e-02 5.976117e+02
# chl 1.0323994 9.885890e-01 1.078151e+00
您可以以这种方式输出单个元素:
res$age1
# estimate 2.5 % 97.5 %
# (Intercept) 2.197201e+04 0.0000000 Inf
# bmi 1.999346e+00 0.4691464 8.520549
# hyp 4.331347e-08 0.0000000 Inf
# chl 9.441578e-01 0.8403936 1.060734
这给出
class(res$age1)
# [1] "matrix" "array"
如果您想要类“ data.frame”
在列表元素中,只需删除 |&gt ; as.matrix()
零件。
数据:
data("nhanes", package='mice')
nhanes <- transform(nhanes, age1=age == 1, age2=age == 2, age3=age == 3)
library(mice)
imp0 <- mice(nhanes, maxit=0)
imp <- mice(nhanes, maxit=5,
predictorMatrix=imp0$predictorMatrix,
method=imp0$method, print=F)
void MainWindow::buildWindow(Level *level, GraphicalUI *graphicUI) {
QGridLayout* layout = new QGridLayout(this);
}
那就是解决方案。
该函数也是所需的在类的标题中存在。
假设variadic参数列表中的所有项目均为相同的类型,那么您可以使用此技巧:
将实际函数实现为非variadic的函数,占据数组和大小。以及任意数量的非广播论点。示例:
void actual_func (int this, double that, size_t argc, int argv[argc])
{
printf("this:%d that:%f\n", this, that);
for(size_t i=0; i<argc; i++)
printf("%d ", argv[i]);
}
此处此
和
可以是任何类型的任何参数,与示例中的固定参数相对应。 argc
和 argv
分别是大小和数组。
然后,我们可以编写一个variadic宏来将variadic调用转换为一个普通函数调用:
#define COUNT_ARGS(...) ( sizeof((int[]){__VA_ARGS__}) / sizeof(int) )
#define func(this,that,...) actual_func(this, that, COUNT_ARGS(__VA_ARGS__), (int[]){__VA_ARGS__})
辅助宏 count_args
计算variadic项目的数量 - 它们都必须是 int
或它行不通。这给出了数组大小。然后,以变色的参数初始化了以复合文字形式的临时数组,然后传递给该函数。完整的示例:
#include <stdio.h>
void actual_func (int this, double that, size_t argc, int argv[argc])
{
printf("this:%d that:%f\n", this, that);
for(size_t i=0; i<argc; i++)
printf("%d ", argv[i]);
}
#define COUNT_ARGS(...) ( sizeof((int[]){__VA_ARGS__}) / sizeof(int) )
#define func(this,that,...) actual_func(this,that,COUNT_ARGS(__VA_ARGS__),(int[]){__VA_ARGS__})
int main (void)
{
func(1, 1.0f, 1, 2, 3);
}
这与整数分配具有相同的类型安全性,含义是SO-SO,但它比Variadic函数更安全。
我发现了这个问题:在没有应用于ESM文件的变压器周围似乎存在一些混乱。就我而言,
jsdom-environment-global.spec.ts
从我的monorepo中的其他软件包导入了ESM模块。此导入触发了一个例外,因为玩笑试图通过require()
导入它,该被捕获,然后再次通过动态导入导入。然后,此动态导入引发了一个例外,即ts
是未知的异常。我不确定为什么没有转换这些文件,但是从如何在开玩笑的自定义测试环境文件中使用Typescript?这似乎是正常的。底线:不要从嘲笑中的ESM文件导入
testenvorlirnment
模块。I found the issue: there seems to be some confusion around the transformer not being applied to ESM files. In my case, the
jsdom-environment-global.spec.ts
imported an ESM module from a different package within my monorepo. This import triggers an exception because jest tries to import it viarequire()
, which is caught and then again imported via dynamic imports. This dynamic import then throws the exception thatts
is an unknown exception. I'm not sure why these files haven't been transformed, but as of How to use TypeScript in a Custom Test Environment file in Jest? this seems to be normal.Bottom line: don't import from ESM files within your jest
testEnvironment
module.当尝试将TS文件用作自定义测试环境时,Jest为什么会抛出err_unknown_file_extension?