离线时如何使用Cargo建立项目?

时间:2019-08-03 08:37:42

标签: rust rust-cargo

我正在通过使用rand条板箱创建小程序来练习生锈(1.36)。但是问题是无论何时我使用cargo new创建新项目,然后在rand中添加cargo.toml依赖项。它连接到互联网并再次下载相同的rand软件包。

与Python相比,已安装的软件包转到site_package文件夹,并可以导入/使用到任何程序。无需再次下载。

我的问题是,如何告诉货物寻找已经安装的本地板条箱,而不是再次下载?

1 个答案:

答案 0 :(得分:5)

即使在现代Python中,也不会只使用全局可用的site_packages目录并“污染”全局可用的软件包,而是会使用virtual environments来维护每个项目的正确版本控制-类似cargo的作用。

使用cargo,一旦在项目中明确下载了所有软件包并指定了它们的版本,就可以传递新的 --offline标志,而一个人正在编译自己的项目,在这种情况下,cargo 在不访问网络的情况下运行

$ cargo build --offline

话虽如此,做您所描述的事情当然是完全可能的:

  1. 创建一个目录,您的依赖项将在该目录中:
    $ mkdir offline_resources
    $ cd offline_resources
    
  2. 下载所需的存储库并进行构建(这是需要使用网络的最后一点):
    $ git clone https://github.com/rust-random/rand.git
    $ cd rand
    $ cargo build
    
  3. 创建一个新项目:
    $ cd ../..
    $ cargo new use_offline
    $ cd use_offline
    
  4. 编辑Cargo.toml
    [dependencies]
    rand = { path="../offline_resources/rand", version="0.7.0" }
    
  5. 构建您的项目:
    $ cargo build --offline
    
  6. 按照3到5的步骤创建另一个将使用相同的rand依赖项的项目。