首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Travis CI测试Pl/Python过程?

如何用Travis CI测试Pl/Python过程?
EN

Stack Overflow用户
提问于 2015-07-30 07:15:16
回答 3查看 956关注 0票数 13

我正在尝试为特拉维斯CI中的一些PL/Python过程设置CI。

我尝试过几种方法:

1)在我试图假设的遗留基础结构中,PL/Python已经安装,但没有成功:

代码语言:javascript
复制
The command "psql -U postgres -c 'CREATE EXTENSION plpythonu;'" exited with 1.
0.01s$ psql -U postgres -d test -c 'CREATE LANGUAGE plpythonu;'
ERROR:  could not access file "$libdir/plpython2": No such file or directory  

2)尝试在开头添加sudo apt-get update && sudo apt-get -y install postgresql-plpython-9.4命令。它也失败了,因为这个命令启动了PostgresSQL 9.4的替换,这已经安装在了Travis环境中。

特拉维斯建筑。

3)还尝试在配置中使用以下行的基于容器的基础设施:

代码语言:javascript
复制
addons:
  postgresql: "9.4"
  apt:
    packages:
      - postgresql-plpython-9.4

也没有成功。

在Travis CI中测试PL/Python过程的好方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-10 01:24:10

我能够使用下面的python构建工作获得.travis.yml

代码语言:javascript
复制
sudo: required
language: python
before_install:
  - sudo apt-get -qq update
  - sudo /etc/init.d/postgresql stop
  - sudo apt-get install -y postgresql-9.4
  - sudo apt-get install -y postgresql-contrib-9.4 postgresql-plpython-9.4
  - sudo -u postgres createdb test
  - sudo -u postgres createlang plpython2u test
  - sudo pip install jinja2
script:
  - >
      sudo -u postgres psql -d test -c 'CREATE OR REPLACE FUNCTION py_test()
                                   RETURNS void LANGUAGE plpython2u AS $$
                                     import jinja2
                                   $$;'
  - sudo -u postgres psql -d test -c 'SELECT py_test();'

您的遗留配置尝试有很多问题,包括在安装9.4之前没有停止现有的PostgreSQL 9.1实例,以及没有正确地指定plpython语言。我相信一些命令也没有作为正确的用户运行。上述配置解决了所有问题。也许有一些方法可以改进这种配置,但是一旦我开始工作,我就停止了。

基于容器的配置无法工作,因为postgresql-plpython-9.4目前不在预先批准的软件包的白名单中。但是,postgresql-plpython-9.5是这样的,所以如果您想迁移到基于容器的配置,可以尝试遵循包审批流程 for postgresql-plpython-9.4,或者等待GA对PostgreSQL 9.5的释放,然后尝试迁移。

票数 7
EN

Stack Overflow用户

发布于 2015-08-10 21:00:40

现在我已经确认了我以前的评论已经被证实了.

正如特拉维斯博士中记录的那样,正确的安装方法是在before_install阶段更新您的依赖项(就像列表中的选项2)。

唯一的问题似乎是升级之前没有停止Postgres。

票数 4
EN

Stack Overflow用户

发布于 2015-07-30 08:05:12

我不知道具体的细节,但是,如果你把文件放在正确的地方,你可以从过程本身调用它。

代码语言:javascript
复制
import fileName.className

代码语言:javascript
复制
import methodName from fileName.className

编辑:我查了一下,把它放在和你正在运行的程序(cmd,空闲,等等)相同的目录中。并调用它,或将其放入文件夹并将文件夹名称添加到代码中。

例如:

代码语言:javascript
复制
import folder/fileName.ClassName
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31717410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档