小编Rya*_*yan的帖子

在Jupyter Notebook中导入期间找不到模块

我有以下包(和工作目录):

WorkingDirectory--
                 |--MyPackage--
                 |            |--__init__.py
                 |            |--module1.py
                 |            |--module2.py
                 |
                 |--notebook.ipynb
Run Code Online (Sandbox Code Playgroud)

__init__.py我有:

import module1
import module2
Run Code Online (Sandbox Code Playgroud)

如果我尝试将MyPackage导入我的笔记本:

import MyPackage as mp 
Run Code Online (Sandbox Code Playgroud)

我会的ModuleNotFoundError: No module named 'module1'.但是如果我在笔记本外部执行脚本,导入工作正常:如果我test.py在同一目录中创建并执行与笔记本中相同的操作,则导入将正常工作.如果我在__init__.py(import MyPackage.module1)中使用完全限定名称,它将在笔记本内部工作.

不同导入行为的原因是什么?

我已经确认笔记本的工作目录了WorkingDirectory.

---更新---------

确切的错误是:

C:\Users\Me\Documents\Working Directory\MyPackage\__init__.py in <module>()
---> 17 import module1

ModuleNotFoundError: No module named 'module1'
Run Code Online (Sandbox Code Playgroud)

我的问题与可能的副本有所不同:

  1. 笔记本能够找到包,但只能加载模块.这是从替代推断module1MyPackage.module1运作良好,并暗示它可能与相关的一个问题PATH.

  2. 我进去WorkingDirectory并在那里启动了服务器.工作目录应该是包含我的包的文件夹.

python python-module python-import python-3.x jupyter-notebook

14
推荐指数
3
解决办法
3万
查看次数

使用 SQLalchemy for PostgreSQL 消除双引号

我正在尝试将 200 个 SAS XPT 文件导入到我的 PostgreSQL 数据库中:

engine = create_engine('postgresql://user:pwd@server:5432/dbName')
for file in listdir(dataPath):
    name, ext = file.split('.', 1)
    with open(join(dataPath, file), 'rb') as f:
        xport.to_dataframe(f).to_sql(name, engine, schema='schemaName', if_exists='replace', index=False)
    print("Successfully wrote ", file, " to database.")
Run Code Online (Sandbox Code Playgroud)

但是,生成的 SQL 对所有标识符都使用双引号,例如:CREATE TABLE "Y2009"."ACQ_F" ("SEQN" FLOAT(53), "ACD010A" FLOAT(53));。问题是,如果列/表/模式是用引号创建的,那么每次我需要查询它们时,我都必须包含引号,同时使用准确的大小写

我想去掉引号,但我无法自己编写自定义 SQL,因为这些文件各自具有非常不同的结构。

python postgresql sqlalchemy python-3.x postgresql-10

6
推荐指数
1
解决办法
4795
查看次数

无法将应用程序身份服务设置为自动启动

在 Windows 10 企业版笔记本电脑上,我发现 AppIDSvc 已停止,并且其启动类型设置为手动(触发启动)。当我尝试通过 GUI 将启动类型更改为自动时,即使从提升的 cmd 提示符运行 services.msc,它也会产生错误“访问被拒绝”。

解决此问题的唯一方法是编辑注册表并更改 HKLM\SYSTEM\CurrentControlSet\Services\AppIDSvc 处的 Start=2。

我能够手动启动该服务。另外我已将注册表权限修改为“完全控制”。我尝试从 ISO 重新安装 Windows,但问题仍然存在。不幸的是微软并没有在MSDN支持论坛上明确回复这个问题。

windows registry windows-services windows-10 applocker

5
推荐指数
1
解决办法
2万
查看次数

PySpark Array&lt;double&gt; 不是 Array&lt;double&gt;

我正在运行一个非常简单的 Spark(Databricks 上的 2.4.0)ML 脚本:

from pyspark.ml.clustering import LDA

lda = LDA(k=10, maxIter=100).setFeaturesCol('features')
model = lda.fit(dataset)
Run Code Online (Sandbox Code Playgroud)

但收到以下错误:

IllegalArgumentException: 'requirement failed: Column features must be of type equal to one of the following types: [struct<type:tinyint,size:int,indices:array<int>,values:array<double>>, array<double>, array<float>] but was actually of type array<double>.'
Run Code Online (Sandbox Code Playgroud)

为什么我array<double>的不是array<double>

这是架构:

root
 |-- BagOfWords: struct (nullable = true)
 |    |-- indices: array (nullable = true)
 |    |    |-- element: long (containsNull = true)
 |    |-- size: long (nullable = true)
 |    |-- type: …
Run Code Online (Sandbox Code Playgroud)

apache-spark pyspark apache-spark-ml

5
推荐指数
1
解决办法
3252
查看次数

使用python计算特殊限制

我想计算这个表达式:

(1 + 1 / math.inf) ** math.inf,
Run Code Online (Sandbox Code Playgroud)

应计算为e。但是Python返回1。为什么呢?

=====更新========

我在这里要做的是从用户输入的APR(年度百分比)中得出有效的年利率。

def get_EAR(APR, conversion_times_per_year = 1):
    return (1 + APR / conversion_times) ** conversion_times - 1
Run Code Online (Sandbox Code Playgroud)

我希望此表达式也适用于连续复利。是的,我知道我可以编写if语句来区分正常情况下的连续复合(然后可以e直接使用常量),但是我最好选择一种集成方式。

python math calculus python-3.x

4
推荐指数
1
解决办法
5900
查看次数

重命名R列表的组件

l1 <- list(a = 'FirstComponent', b= 'SecondComponent')
Run Code Online (Sandbox Code Playgroud)

要将第一个组件重命名acI ,我可以这样做:

names(l1) <- c('c', 'b')
Run Code Online (Sandbox Code Playgroud)

或这个:

names(l1)[1] <- c('c')
Run Code Online (Sandbox Code Playgroud)

但不是这个:

names(l1[1]) <- c('c')
Run Code Online (Sandbox Code Playgroud)

这不是:

names(l1[[1]]) <- c('c')
Run Code Online (Sandbox Code Playgroud)

为什么第三和第四个代码示例不起作用?他们还尝试重命名一个R对象l1[1]l1[[1]].现场背后发生了什么?

=========以下是原始问题的一部分===========

R文档:可以通过一般规则更新名称属性的一部分:参见示例.这是有效的,因为那里的表达式被评估为z <- "names<-"(z, "[<-"(names(z), 3, "c2")).

names(z)in 的返回值"[<-"(names(z), 3, "c2")作为参数传递给下一个函数,即"[<-".

functional-programming r function return-value

2
推荐指数
1
解决办法
858
查看次数

一对多关系总是被 PowerBI 变成多对一

我在 PowerBI 中有两个来自 Azure SQL 的表,使用直接查询:

  • EMP(empID PK)
  • contactInfo(contactID PK, empID FK, contactDetail)

EMP.empID到有明显的一对多关系contactInfo.empID。外键约束已成功实施。

但是,我只能在 PowerBI 中创建多对一关系 ( contactInfo.empIDto EMP.empID)。如果我尝试相反的方法,PowerBI 总是会自动将关系转换为多对一(通过交换 from 和 to 列),这会阻止我创建视觉效果。PowerBI 是否认为两者是等价的?

更新:

我所做的只是在 PowerBI 中创建一个表,显示这两个表的连接结果。外键约束是contactInfo.empID REFERENCES EMP.empID,它是多对一的。我想这应该不是问题,因为我可以使用 SQL 直接查询连接。

还请建议我是否应该在相反的方向创建外键。

有关创建视觉失败的更多信息

确切的错误消息是:

Can't display the data because Power BI can't determine 
the relationship between two or more fields.
Version: 2.43.4647.541 (PBIDesktop)
Run Code Online (Sandbox Code Playgroud)

要重现错误:

数据库架构如下:

模式

我想要的是 PowerBI 中的一个表,显示员工的联系方式和销售信息,即加入所有四个表。当表视觉对象的 VALUES 包含“empName、contactDetail、contactType、productName”时会发生错误,但是,如果我只包含“empName、contactDetail、contactType”或“empName、productName”,则不会发生错误。起初我以为问题可能出在contactInfo和emp之间的关系上,但现在似乎更复杂了。我猜这可能是由多个一对多关系引起的?

data-visualization foreign-keys relationship powerbi

1
推荐指数
1
解决办法
3102
查看次数