标签: software-distribution

程序如何判断您是否在演示期过后使用过它们?

在某些程序上,您可以在演示期间运行它们,例如“十个任务”或“5小时”,然后您需要决定购买它们以继续使用它们,但是如果您删除并卸载该程序然后重新安装它,它就会知道它之前已安装,不会让您再次运行演示。

它是如何做到这一点的?当您下载它时,它是否会向 CDN 发送一个识别码(IP?)以让它知道您之前已经下载过它,或者当程序本身安装时,它是否会检查以前安装的痕迹?

installation software-distribution serial-number

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

如果我不随包分发 pytest 测试,如何组织它们?

正如pytest 文档中所建议的,我设置了我的包,目的不是将我的测试与我的包一起分发:

\n\n
setup.py\nmypkg/\n    __init__.py\n    mypkg/\n      appmodule.py  \ntests/\n    test_app.py\n    ...\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我对如何确保这些测试在存在时正确运行(例如在 Travis CI 上或在项目目录的克隆中)感到困惑。

\n\n

我希望测试脚本中的导入应用于相邻mypkg/目录中的源(而不是任何mypkg可能安装在 中的源site-packages),但我遇到了令我困惑的错误。

\n\n

如果我遵循文档中的建议pytest并且不__init__.py添加tests/then

\n\n
from __future__ import absolute_import\nfrom mypkg.appmodule import * \n
Run Code Online (Sandbox Code Playgroud)\n\n

我明白了

\n\n
\n

导入错误:没有名为 mypkg.appmodule 的模块

\n
\n\n

当与

\n\n
from __future__ import absolute_import\nfrom ..mypkg.appmodule import * \n
Run Code Online (Sandbox Code Playgroud)\n\n

我明白了

\n\n
\n

ValueError:尝试在非包中进行相对导入

\n
\n\n

如果我忽略文档并包含一个__init__.py,那么对于后者我会得到

\n\n
\n

ValueError:尝试超出顶级包的相对导入

\n
\n\n

仅通过包含 …

software-distribution pytest python-2.7

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

使用 setup.py Cythonize 但不编译 .pyx 文件

我有一个包含多个.pyx文件的 Cython 项目。为了分发我的项目,我想按照 Cython 文档中的建议提供我生成的.c文件,以尽量减少不同 Cython 版本的问题。

我当前的工作流程是使用以下方法构建项目:

me@machine$ python setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)

这 cythonizes(即使用 Cython将.pyx文件转换为.c / .cpp文件)所有.pyx文件,然后编译它们。对于发行版,我不需要已编译的 ( .so ) 文件,因此我基本上忽略了它们。问题是,我在无用的编译上浪费了很多时间。

有没有办法使用cythonize文件夹中的所有.pyx文件setup.py,而不编译它们?

编辑:为什么不直接使用 $ cython my_file.pyx

我有大约 20 个.pyx文件,它们具有不同的编译器指令cython为每个文件调用命令行比仅仅等待它编译要慢。

另一方面,创建一个 shell 脚本来对它们进行 cythonize 会给我留下第二个需要保持最新的编译器指令列表。我宁愿不这样做,以保持我可能的失败点最小。

python software-distribution setuptools cython setup.py

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

如何在 createStartScripts 任务中更改 unixStartScriptGenerator.template 以便 distTar 使用我在 build.gradle 中的自定义模板文件?

我需要修改 gradle 为distTar任务生成的启动脚本。我似乎能够设置 unixStartScriptGenerator.template如下所示,但是当我从 tar 解压缩脚本时,我的更改不存在。

这是我的完整内容build.gradle

apply plugin: 'java'
apply plugin: 'war'

// to use the main method in Main, which uses Jetty
apply plugin: 'application'
mainClassName = 'com.example.Main'
project.version = '2017.0.0.0'

repositories {
  mavenLocal()
  mavenCentral()
}

task createStartScripts(type: CreateStartScripts) {
  // based on https://github.com/gradle/gradle/tree/v3.5.0/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins
  def tplName = 'unixStartScriptTemplate.txt'
  // this succeeds. I tried negating it to ensure that it runs, and it failed, so it's running.
  assert project.file(tplName).exists();
  unixStartScriptGenerator.template = project.file(tplName).newReader() as …
Run Code Online (Sandbox Code Playgroud)

java software-distribution gradle build.gradle gradle-plugin

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

Matlab 编译器:在安装过程中保护软件的重新分发

我正在考虑使用 Matlab 编译器来按价格分发软件。我正在研究(非常)简单的方法来阻止重新分发而不打扰用户。有什么建议吗?

一种想法是通过电子邮件向用户发送许可证密钥,并让他们在安装过程中输入该密钥,以便在许可证服务器上进行验证。如果密钥与服务器上的密钥匹配,则安装将照常进行,否则,将显示一条警告消息,通知用户购买另一个许可证。然而,这种方法要求指定的功能仅在安装过程中运行,而不是在安装之后运行(以免惹恼用户)。使用 Matlab 编译器或其他方式可以实现这一点吗?

我想我可以在用户的​​磁盘上创建一个文件,程序在启动时会查找该文件(如果存在,则不是第一次运行),但是如果用户复制整个目录,则该文件将被复制也。

matlab software-distribution license-key matlab-compiler

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

如何为多个Python版本和平台构建编译模块

我已经为我自己的流程构建了一个 Python 3 模块。

我使用 cython 来编译和包装 C++ 源代码。

我有一台带有 Python 3.4 的 Linux (Debian Jessie) 机器,因此 cythonize 为我制作了一个Processing.cpython-34m.so并将其复制到/usr/local/lib/python3.4/dist-packages.

但是当我在另一台装有 python3.5 的机器上使用它时,我必须重新编译所有内容。

如何从我的机器上为所有 Python 3 版本和多个平台构建 Linux 或 pip 包(这里只有 Jessie 和 Stretch,它们可能非常接近,实际上是相等的)?最好不需要在我的机器上安装所有版本的 Python 3。

这是我的 cythonization 的 setup.py 文件:

from distutils.core import setup, Extension
from Cython.Build import cythonize

setup(ext_modules = cythonize(Extension(
            "MyProcessing",
            sources=["MyProcessing.pyx", "myprocess.cpp", "mythirdp.cpp"],
            language="c++", 
        )))
Run Code Online (Sandbox Code Playgroud)

谢谢。

python software-distribution cython python-3.x cythonize

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

Electron 打包应用程序并上传到 launchpad ppa

所以,我正在用电子构建和打包一个软件。现在我已经制作了软件并获得了一个.deb文件(在 Ubuntu 中),我想将其上传到我的 launchpad ppa,以便每个人都可以轻松安装/更新它。问题是,ppa 不.deb直接接受文件,我不知道如何打包应用程序以便将其上传到 ppa。与此相关的问题很少,但没有一个有完整的指南。那么,我该怎么做呢?

javascript software-distribution launchpad electron

5
推荐指数
0
解决办法
126
查看次数

与电子打包器一起分发 Homebrew 依赖项

我有一个具有以下依赖项的电子应用程序:

  1. ffmpeg
  2. libmagic
  3. gdbm

目前,我brew install ffmpeg在应用程序启动时使用 Homebrew 和 run等。

然而,这对于分发来说是可怕的。有没有办法将这些依赖项与我的应用程序打包一起分发,这样最终用户就不必使用 Homebrew 或处理安装错误?我正在分发我的应用程序,electron-packager用于创建桌面 Mac 应用程序。

我给出了特定的依赖项只是为了上下文——希望有一个解决方案可以处理任何通用依赖项?

homebrew software-distribution dependency-management electron-packager

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

如何在 Mac 上使用 Nuitka 从 python 创建“.app”

第一次在 macOS (10.14) 上尝试 Nuitka。

我做了python3 -m nuitka --standalone hello.py(也试过--clang

结果是一个奇怪的hello.dist文件夹——它甚至没有在 Finder 中显示为文件夹——它包含一堆.so文件,Python以及我的可执行文件hello.

我以为它会创建一个.app捆绑包?还有一步吗?

(我也试过https://sveinbjorn.org/platypus但这并不能真正编译 python。)

python software-distribution nuitka

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

Dyalog APL:如何编写可以执行的独立文件?

我现在知道如何使用 APL 解释器,但我对如何将 APL 写入文件然后运行该文件感到非常困惑。我目前使用RIDE编写 Dyalog APL 。我现在想做的是:

  1. 使用 RIDE 开发程序(我如何访问键绑定?)。
  2. 将我的程序保存到文件中。
  3. 使用命令行参数从命令行运行程序(如何获取命令行参数?)
  4. 分发我的程序以便其他人可以使用它们。

大多数在线文档都提到“APL 会话”,这让我觉得可能存在一些类似 Smalltalk 的东西,人们只能分发“实时图像”或类似的东西。如果是这样的话,我有一组不同的问题:

  1. 如何保存和加载这些图像文件?
  2. 如何分发图像文件?
  3. 我可以从命令行执行此类代码以获取命令行参数吗?

总的来说,我对如何用APL编写软件感到很困惑!

我使用的是 Ubuntu,一般来说我想以 Linux 为目标。Windows/macOS 支持将是一个优势,但我目前对 Linux 支持感兴趣。

executable software-distribution apl dyalog command-line-arguments

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