diff --git a/deploy/run_package.go b/deploy/run_package.go
index c5cb325fbfb0406e26a165a7995893092e024bf1..2a081e8103810a117d001c6f56d1c4dd1d60acd5 100644
--- a/deploy/run_package.go
+++ b/deploy/run_package.go
@@ -64,11 +64,12 @@ func RunPackage(do *def.Packages) error {
 	}
 
 	// Ensure relative paths if we're given a different path for deploy contracts jobs
+	// Solidity contracts may import other solidity contracts, and the working directory
+	// is the directory where solc searches from.
 	if do.Path != pwd {
-		for _, job := range do.Package.Jobs {
-			if job.Deploy != nil {
-				job.Deploy.Contract = filepath.Join(do.Path, job.Deploy.Contract)
-			}
+		err = os.Chdir(do.Path)
+		if err != nil {
+			return err
 		}
 	}