Clojure 创建deps.edn文件时出现问题
各位,我决定完全重写这篇文章,以清晰的方式展示它 首先,感谢大家的支持。我很感激 这是“Clojure研讨会-Packt”中的练习,我遇到了以下难题: (我的IDE是IntelliJ,我使用的是Windows) 练习4.10:从CSV文件导入数据 1。在计算机上方便的地方创建一个文件夹。 我决定创建一个全新的项目 在选择两者之间有什么区别吗?我大部分时间都使用Leiningen,但我应该使用Deps吗?因为我要使用Deps.edn文件 2。将match_scores_1991-2016_UNINDEXED.csv文件下载到您创建的文件夹中。(在此继续) 但是我应该在哪里下载这个文件呢?进入项目文件内的src文件或任何文件工作?有什么区别吗 我决定存钱 3。在编辑器中的同一文件夹中,创建一个包含以下内容的deps.edn文件:Clojure 创建deps.edn文件时出现问题,clojure,clojure-java-interop,clojure-contrib,Clojure,Clojure Java Interop,Clojure Contrib,各位,我决定完全重写这篇文章,以清晰的方式展示它 首先,感谢大家的支持。我很感激 这是“Clojure研讨会-Packt”中的练习,我遇到了以下难题: (我的IDE是IntelliJ,我使用的是Windows) 练习4.10:从CSV文件导入数据 1。在计算机上方便的地方创建一个文件夹。 我决定创建一个全新的项目 在选择两者之间有什么区别吗?我大部分时间都使用Leiningen,但我应该使用Deps吗?因为我要使用Deps.edn文件 2。将match_scores_1991-2016_UNIN
{:deps
{org.clojure/data.csv {:mvn/version "0.1.4"}
semantic-csv {:mvn/version "0.2.1-alpha1"}}}
user> (require '[clojure.data.csv :as csv])
nil
user> (require '[clojure.java.io :as io])
nil
user> (with-open [r (io/reader "match_scores_1991-2016_unindexed_csv.csv")]
(first (csv/read-csv r)))
所以,我创建了一个文件
4。通过计算REPL中的以下表达式,验证一切正常:
{:deps
{org.clojure/data.csv {:mvn/version "0.1.4"}
semantic-csv {:mvn/version "0.2.1-alpha1"}}}
user> (require '[clojure.data.csv :as csv])
nil
user> (require '[clojure.java.io :as io])
nil
user> (with-open [r (io/reader "match_scores_1991-2016_unindexed_csv.csv")]
(first (csv/read-csv r)))
为此项目创建了新的本地Clojure REPL
但是当我要计算测试表达式时,它在计算第二个和第三个表达式时显示了一个错误
评估“clojure.data.csv:as csv”时出现以下错误:
Execution error (FileNotFoundException) at csv-example.core/eval1549 (form-init2604783929697477049.clj:1).
Could not locate clojure/data/csv__init.class, clojure/data/csv.clj or clojure/data/csv.cljc on classpath.
我错过了什么?我已经尝试了好几天来解决这个问题,但我没有找到任何答案
谢谢大家! 我将尝试回答这里的所有问题,并让您进入下一阶段:
project.clj
文件。Clojure CLI使用deps.edn
文件。由于本书要求您创建deps.edn
文件,因此您需要使用Clojure CLI而不是Leiningen来启动REPL和/或运行代码。下面将对此进行详细介绍
.csv
文件下载到步骤1中创建的任何文件夹中。包含deps.edn
文件的文件夹。看看你的截图,看起来你让Cursive/IntelliJ创建了一个基于Leiningen的项目。如果重新开始并要求Cursive/IntelliJ创建一个基于Deps的项目,则项目顶部将有一个Deps.edn
文件,您可以对其进行编辑,使其看起来像本书所需要的,最终您将得到:
deps.edn
match_scores_1991-2016_unindex.csv
src
deps.edn
文件——由Cursive/IJ创建——您可以在项目顶部编辑该文件
deps.edn
,因此它看不到您在那里添加的内容(即使您将它放在项目的顶部,project.clj
)。因此,Leiningen不知道您需要CSV库,因此当您尝试要求它时,它在REPL中不可用——并且因为要求失败,您没有获得CSV
别名,因此对CSV/读取CSV
的调用编译失败
cmd.exe
),可以执行以下操作:
C:\Users\seanc>mkdir myproject
C:\Users\seanc>cd myproject
C:\Users\seanc\myproject>notepad deps.edn
C:\Users\seanc\myproject>dir
Volume in drive C is Local Disk
Volume Serial Number is 4459-1FFE
Directory of C:\Users\seanc\myproject
01/05/2021 02:24 PM <DIR> .
01/05/2021 02:24 PM <DIR> ..
01/05/2021 02:25 PM 101 deps.edn
1 File(s) 101 bytes
2 Dir(s) 158,998,511,616 bytes free
C:\Users\seanc>mkdir-myproject
C:\Users\seanc>cd myproject
C:\Users\seanc\myproject>notepad deps.edn
C:\Users\seanc\myproject>dir
驱动器C中的卷是本地磁盘
卷序列号为4459-1FFE
C:\Users\seanc\myproject目录
2021年5月1日下午02:24。
2021年5月1日下午2:24。。
2021年5月1日02时25分101副教育部
1个文件101字节
2个目录15899851616字节可用
(然后您可以将.csv
文件下载到myproject
中,然后按照书中可能显示的方式启动REPL——我希望它建议您在该文件夹中运行clj
命令)
b。这里是您遇到问题的地方:在Clojure世界中,Windows并没有得到很多工具和库的很好支持——几乎所有Clojure开发人员都使用Mac或Linux。即使是那些使用Windows的人也通常使用WSL2(在Windows 10上)和Linux风格,如Ubuntu。因为这比在Windows上使用工具更容易
Windows上的Powershell提供了Clojure CLI的预发布版本:
如该页底部所述,安装Scoop
然后使用它安装Clojure CLI更容易。然后使用Powershell而不是命令提示符
我不知道您对WSL2/Linux或Powershell的感觉如何——因为您是编程新手,我怀疑这一切都会显得有些复杂和令人畏惧。你可能会考虑放弃“CuljureWorksWord”(Pad Toots通常不是很好),或者找到另一本书或在线教程,让你通过<强>使用LeINGINE< <强>(最好是在Windows上,但这可能很难找到,因为很少有Culjurias使用Windows)如果你选择使用deps.edn,你可以按照肖恩·科菲尔德在文章中的评论来解决这个问题 或者,如果你更喜欢leiningen,你可以通过添加
[org.clojure/data.csv "1.0.0"]
[semantic-csv "0.2.1-alpha1"]
在project.clj文件中的:dependencies键处
很难说你有什么问题。步骤3可以使用任何编辑器完成。deps.edn是一个文本文件。你能解释一下你试过什么吗